1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Maximus1

Beiträge von Maximus1

  • dsktopauflösung ausgeben bei erweiterten desktop?

    • Maximus1
    • 2. Juni 2011 um 17:54
    Zitat von name22

    Die Diskussion mit Screenshots von DirectX/OpenGL basierenden Fenstern per AutoIt hatten wir glaube ich schon mehr als einmal und wahren uns jedesmal einig, dass AutoIt dafür zu langsam ist bzw. eine Endscene mit AutoIt zu hooken zu kompliziert ist (erst recht für einen Anfänger).

    das es für anfänger wohl schwer ist merke ich. :(
    die geschwindigkeit ist relativ egal, ich will ja den im meinem fall den 2. bildschirm in einem fenster auf dem 1. bildschirm wiedergeben. es soll nur als kontrollfenster fungieren und delays sind ok.
    soweit klappt das ja auch, nur nicht, wenn auf dem 2. bildschirm etwas im vollbild laufen lasse.

    der screenshooter schaut nett aus und ich werde das tool auch in meine sammlung an nützlichen tolls aufnehmen, aber das tool zeigt schon kein bild mehr an, wenn ich mit meiner möglichkeit das bild noch sehe.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    das linke ist von screenshooter und das linke mit meinem tool.
    sobald ich aber mit dem in diesem fall MC in den vollbild modus gehe ist es auch bei mir duster. :(

    kann ich evtl. die D3D9 udf dafür nutzen?
    D3D9 Udf
    da gibt es die sektion

    [autoit]

    ;============================================================================================================================================
    ; Function: _D3D9_MemCopy($pPointer1, $pPointer2, $iSize)
    ; Description: Copies the values of $pPointer2 to $pPointer1
    ; Parameter(s): $pPointer1 - Pointer to the destination
    ; $pPointer2 - Pointer to the Source
    ; $iSize - Number of bytes to copy.

    [/autoit][autoit][/autoit][autoit]

    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; @Error - 1 to 4 = @error of DllStructCreate with $pPointer1
    ; 5 to 8 = @error of DllStructCreate (+4) with $pPointer2
    ; Author(s): Deathly Assassin (http://www.autoitbot.de)
    ;============================================================================================================================================
    Func _D3D9_MemCopy($pPointer1, $pPointer2, $iSize)
    Local $tStructure, $tStructure2, $Err
    $tStructure = DllStructCreate("byte[" & $iSize & "]", $pPointer1)
    $Err = @error
    If $Err Then SetError($Err, 0, 0)
    $tStructure2 = DllStructCreate("byte[" & $iSize & "]", $pPointer2)
    $Err = @error
    If $Err Then SetError($Err, 0, 0)
    DllStructSetData($tStructure, 1, DllStructGetData($tStructure2, 1))
    Return 1
    EndFunc ;==>_D3D9_MemCopy

    [/autoit]

    ohne mich da nun auszukennen, liest sich das doch, wie kopiere den inhalt von X nach Y.

    [autoit]

    _D3D9_MemCopy($Sourcedisplay, $Mein_tool, $iSize)

    [/autoit]


    aber was mache ich mit $iSize?

    das würde dann ja heissen das ich das handle vom sourcefenster nehme und in meine GUI reinkopiere. theoretisch.....
    oder bin ich da auf dem holzweg?

    Dateien

    MC7.png 13,09 kB – 0 Downloads Unbenannt.png 742,44 kB – 0 Downloads
  • dsktopauflösung ausgeben bei erweiterten desktop?

    • Maximus1
    • 2. Juni 2011 um 15:18

    ich danke euch für die hilfe, ich habe dann die möglichkeit von UEZ genommen.

    und mit

    [autoit]

    _WinAPI_StretchBlt($hDC_GUI, 0, $y, $widht, $height, $hDC_Desktop, $aFullScreen[2]/2, $aFullScreen[1], $aFullScreen[2]/2, $aFullScreen[3],$SRCCOPY)

    [/autoit]


    das 2. display zum capturen genommen.

    problem ist jetzt nur, aber das hatte ich vorher auch schon, das ein vollbild programm nicht gecaptured wird. wenn das programm im fenstermodus läuft jedoch schon.
    kann man da was machen?

  • dsktopauflösung ausgeben bei erweiterten desktop?

    • Maximus1
    • 1. Juni 2011 um 13:08

    ich habe 2 displays die mit 1920x1080 im erweiterten modus laufen.
    wenn ich

    [autoit]

    MsgBox(0,"","Bildschirmbreite: "&@DesktopWidth&", Bildschirmhoehe: "&@DesktopHeight)

    [/autoit]


    ausführe wird mir 1920x1080 ausgegeben, aber ist das dann nicht nur für einen bildschirm?
    müsste ich nicht 3840x1080 haben?

  • GUI ohne titelleiste durch klick und bewegung verschiebbar machen?

    • Maximus1
    • 31. Mai 2011 um 16:56

    komisch, ich habe auch win7 x64 und da habe das nicht.

    lässt du es etwa als x64 laufen?

  • GUI ohne titelleiste durch klick und bewegung verschiebbar machen?

    • Maximus1
    • 31. Mai 2011 um 16:26

    kannst du von den "effekten" einen screenshot erstellen?

    ahja, nachdem du was von registrieren geschrieben hast, ist mir dann auch die passende zeile aufgefallen.
    nun geht es. :)

    ich danke dir

  • GUI ohne titelleiste durch klick und bewegung verschiebbar machen?

    • Maximus1
    • 31. Mai 2011 um 15:38

    i2c: ich habe dein script ausprobiert und es geht, aber ich brauche den titel meines fensters, da d4essen metrics gemessen werden und darin was anderes eingepasst wird.

    nagut dann werfe ich mal nein geschreibsel in die runde.

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1) ;Wechsle in den OnEvent Modus

    [/autoit] [autoit][/autoit] [autoit]

    Global $gui, $guiPos, $pic, $picPos, $msg, $n, $hdisplay, $MCpos, $SCpos,$SCpos0,$SCpos1, $bild, $widht, $height, $fehler, $Name1, $Name2;, $test, $test1, $SCpostest
    Global $counter =0, $ausg_quali=4, $time = 0, $pid,$border1,$border2,$paaddedborder,$y=0
    Global $hdll_gdi32 = DllOpen("gdi32.dll")
    Global $sFile = "auflösung.ini"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If Not FileExists($sFile) Then
    eingabe()
    Else
    lesen()
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func eingabe()
    $widht = InputBox("auflösung", "breite des side-display")
    $height = InputBox("auflösung", "höhe des side-display")
    $ausg_quali = InputBox("Bildqualität", "Es sind Werte zwischen 1 und 4 möglich." & @CRLF & "Je höher desto besser ist das Bild, aber auch die Systemauslastung")
    $Name1 = InputBox("Dein Name", "Besitzer")
    $Name2 = InputBox("Mein Name", "System")
    iniwrite_eingabe()
    ;~ IniWrite($sFile, "widht", "widht", $widht)
    ;~ IniWrite($sFile, "height", "height", $height)
    ;~ IniWrite($sFile, "Qualität", "level", $ausg_quali)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func lesen()
    iniread_lesen()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $widht <10 Then
    $widht = InputBox("auflösung", "breite des side-display")
    IniWrite($sFile, "widht", "widht", $widht)
    EndIf
    If $height <10 Then
    $height = InputBox("auflösung", "höhe des side-display")
    IniWrite($sFile, "height", "height", $height)
    EndIf
    If $ausg_quali <1 Then
    $ausg_quali = InputBox("Bildqualität", "Es sind Werte zwischen 1 und 4 möglich." & @CRLF & "Je höher desto besser ist das Bild, aber auch die Systemauslastung")
    IniWrite($sFile, "Qualität", "level", $ausg_quali)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    WinWait("Windows Media Center",'',5); warte auf das media center

    [/autoit] [autoit][/autoit] [autoit]

    #Region --- CodeWizard generated code Start ---

    [/autoit] [autoit][/autoit] [autoit]

    ;MsgBox features: Title=Yes, Text=Yes, Buttons=Yes and No, Icon=Critical, Timeout=10 ss
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(20,"Fehler","Media Center nicht gefunden oder verdeckt"& @CRLF & "Media Center versuchen zu starten?",10)
    Select
    Case $iMsgBoxAnswer = 6 ;Yes
    Run(@WindowsDir & "\ehome\ehshell.exe",@WindowsDir & "\ehome")
    WinWaitActive("Windows Media Center",'',5); warte auf das media center
    Case $iMsgBoxAnswer = 7 ;No
    $fehler = "Media Center Fenster nicht gefunden, abbruch durch User"
    CLOSE_error_abfrage()
    Case $iMsgBoxAnswer = -1 ;Timeout
    $fehler = "Media Center Fenster nicht gefunden, abbruch durch Timeout"
    CLOSE_error_abfrage()
    EndSelect
    #EndRegion --- CodeWizard generated code End ---

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    FensterMessenMC()

    [/autoit] [autoit][/autoit] [autoit]

    ;==> Windows Metrics lesen
    $border1 = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","CaptionHeight") ; titelleiste lesen
    $border1 = $border1/15
    $border2 = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","PaddedBorderWidth") ; Ramen lesen
    $border2 = $border2/15
    $paaddedborder =$border1 + $border2
    ;==> Windows Metrics lesen ende

    [/autoit] [autoit][/autoit] [autoit]

    $hDesktop = _WinAPI_GetDesktopWindow() ;Handle des Desktops hohlem
    $hDC_Desktop = _WinAPI_GetDC($hDesktop) ;Den Device Context vom Desktop ermitteln

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Desktop",$widht, $height, $SCpos0, $SCpos1, $WS_SIZEBOX + $WS_MAXIMIZEBOX + $WS_SYSMENU + $WS_POPUP + $WS_EX_CONTROLPARENT) ;Eine gui erstellen
    $hDC_GUI = _WinAPI_GetDC($hGUI) ;den DC davon ermitteln

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetBkColor(0x000000)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Guten = GUICtrlCreateLabel("Guten Tag " & $Name1 & "." & @CRLF &"Hier ist " & $Name2 &". "& @CRLF & @CRLF & "Ich wünsche dir viel Vergnügen",$widht/5,$height/3,$widht,$height/2)
    GUICtrlSetFont(-1, 20, 800, 0, "Hollywood Hills")
    GUICtrlSetColor(-1, 0x3399FF)
    Sleep(1000)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    DllCall($hdll_gdi32, "int", "SetStretchBltMode", "dword", $hDC_GUI, "int", $ausg_quali) ;den schönen blit modus anstellen
    ;~ MouseClickDrag("",,,,)
    While(1)
    Sleep(1)
    MClesen()
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func MClesen()
    _WinAPI_StretchBlt($hDC_GUI,0--$paaddedborder, $y--$paaddedborder, $widht-$paaddedborder,$height-$paaddedborder, $hDC_Desktop, $MCpos[0], $MCpos[1], $MCpos[2], $MCpos[3], $SRCCOPY) ; titelleiste wird von TOP abgezogen und das gemesseneMC wird in das gemessene/voreingestellte anzeigeprogramm eingepasst
    ;Der Befehl transveriert den Inhalt des Desktop DC's auf die GUI DC und passt dabei die grösse an das gegenstück ohne grössenanpassung ist _WinAPI_BitBlt
    $counter = $counter +1
    If $counter = 20 Then; alle 20 durchläufe wird
    FensterMessenMC() ; das fenster vom MC gemessen und als neuer richtwert übernommen
    FensterMessenSC() ; das fenster vom SC gemessen und als neuer richtwert übernommen
    $counter =0
    EndIf
    EndFunc ;==>MClesen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Author.........: Yashied
    Func _WinAPI_StretchBlt($hDestDC, $iXDest, $iYDest, $iWidthDest, $iHeightDest, $hSrcDC, $iXSrc, $iYSrc, $iWidthSrc, $iHeightSrc, $iRop)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Ret = DllCall($hdll_gdi32, 'int', 'StretchBlt', 'hwnd', $hDestDC, 'int', $iXDest, 'int', $iYDest, 'int', $iWidthDest, 'int', $iHeightDest, 'hwnd', $hSrcDC, 'int', $iXSrc, 'int', $iYSrc, 'int', $iWidthSrc, 'int', $iHeightSrc, 'dword', $iRop)

    [/autoit] [autoit][/autoit] [autoit]

    If (@error) Or (Not $Ret[0]) Then
    Return SetError(1, 0, 0)
    EndIf
    Return 1
    EndFunc ;==>_WinAPI_StretchBlt

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func FensterMessenMC() ;==>MC wird Vermessen
    $MCpos = WinGetPos("Windows Media Center"); äussere koordinaten des media center abfragen
    If @error Then
    MsgBox(16,"Fehler","Media Center Fenster nicht gefunden")
    $fehler = "Media Center Fenster nicht gefunden"
    CLOSE_error()
    EndIf
    EndFunc ;==> FensterMessen()

    [/autoit] [autoit][/autoit] [autoit]

    Func FensterMessenSC() ;==>SC wird Vermessen

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $test1 = $test
    $SCpos = WinGetPos("Desktop"); äussere koordinaten des screecapture abfragen
    If @error Then
    MsgBox(16,"Fehler","screencap Fenster nicht gefunden")
    $fehler = "screencap Fenster nicht gefunden"
    CLOSE_error()
    EndIf
    $widht = $SCPos[2]
    $height = $SCPos[3] ; veränderung messen und border abziehen!!!!!!
    EndFunc ;==> FensterMessen()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func iniwrite_eingabe() ;==>werte werden in die datei geschrieben
    IniWrite($sFile, "widht", "widht", $widht)
    IniWrite($sFile, "height", "height", $height)
    IniWrite($sFile, "Qualität", "level", $ausg_quali)
    IniWrite($sFile, "Benutzer", "Name", $Name1)
    IniWrite($sFile, "System", "Name", $Name2)
    EndFunc ;==>iniwrite_eingabe

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func iniread_lesen() ;==werte werden aus der datei gelesen
    $widht=IniRead($sFile, "widht", "widht",1)
    $height=IniRead($sFile, "height", "height",1)
    $SCpos0=IniRead($sFile, "x", "x",1)
    $SCpos1=IniRead($sFile, "y", "y",1)
    $SCpos2=IniRead($sFile, "breite", "breite",1)
    $SCpos3=IniRead($sFile, "höhe", "höhe",1)
    $ausg_quali=IniRead($sFile, "Qualität", "level",1)
    $Name1 = IniRead($sFile, "Benutzer", "Name",1)
    $Name2 = IniRead($sFile, "System", "Name",1)
    EndFunc ;==> iniwrite_close

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func CLOSEClicked() ;==>gute nacht ;)
    $SCpos = WinGetPos("Desktop"); äussere koordinaten des media center abfragen
    If Not @error Then
    iniwrite_close()
    EndIf
    ;benutzte resourcen freigeben
    _WinAPI_ReleaseDC($hGUI, $hDC_GUI)
    _WinAPI_ReleaseDC($hDesktop, $hDC_Desktop)
    Exit
    EndFunc ;==>CLOSEClicked

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func iniwrite_close() ;==>werte für das aneigefenster werden in die datei geschrieben
    IniWrite($sFile, "x", "x", $SCpos[0])
    IniWrite($sFile, "y", "y", $SCpos[1])
    IniWrite($sFile, "breite", "breite", $SCpos[2])
    IniWrite($sFile, "höhe", "höhe", $SCpos[3])
    EndFunc ;==>iniwrite_close

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func CLOSE_error() ;==>abbruch mit fehlerausgabe
    FileOpen("fehler.txt",1); fehlerdatei öffnen oder erstellen
    FileWriteLine("fehler.txt",""& @MDAY&"."&@MON&"."&@YEAR&"_"&@HOUR&":"&@MIN&" "&$fehler&@CRLF); datum und zeit und fehler reinschreiben
    FileClose("fehler.txt")
    _WinAPI_ReleaseDC($hGUI, $hDC_GUI)
    _WinAPI_ReleaseDC($hDesktop, $hDC_Desktop)
    DllClose($hdll_gdi32)
    Exit
    EndFunc ;==>CLOSE_error

    [/autoit] [autoit][/autoit] [autoit]

    Func CLOSE_error_abfrage() ;==>abbruch mit fehlerausgabe
    FileOpen("fehler.txt",1); fehlerdatei öffnen oder erstellen
    FileWriteLine("fehler.txt",""& @MDAY&"."&@MON&"."&@YEAR&"_"&@HOUR&":"&@MIN&" "&$fehler&@CRLF); datum und zeit und fehler reinschreiben
    FileClose("fehler.txt")
    DllClose($hdll_gdi32)
    Exit
    EndFunc ;==>CLOSE_error

    [/autoit]
  • GUI ohne titelleiste durch klick und bewegung verschiebbar machen?

    • Maximus1
    • 31. Mai 2011 um 15:15

    ich habe meine GUI mit

    [autoit]

    $WS_POPUP

    [/autoit]

    der titelleiste beraubt, jedoch würde ich dennoch gern das fenster mit der maus verschieben können.
    konnt ihr mich mal auf den richtigen weg bringen?

  • screencapture eines vollbild programms

    • Maximus1
    • 31. Mai 2011 um 00:12

    es gibt fortschritte zu vermelden.
    dank Sprengers script konnte ich nun meines dahingehend ändern, das es macht was ich will.
    nun habe ich nur noch ein problem.
    wenn ich das media center auf einem der monitore im fenstermodus laufen habe, wird mir alles gezeigt.
    aber das tool soll ja auch dann seinen job machen, wenn das Media Center auf dem anderen monitor im vollbild modus läuft.

    hat da einer vielleicht einen tip für mich?

    hier erstmal der aktuelle stand:

    :rock:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1) ;Wechsle in den OnEvent Modus

    [/autoit] [autoit][/autoit] [autoit]

    Global $gui, $guiPos, $pic, $picPos, $msg, $n, $hdisplay, $MCpos, $SCpos,$SCpos0,$SCpos1, $bild, $widht, $height, $fehler, $counter =0, $ausg_quali=4, $Name1, $Name2, $msg, $time = 0, $pid,$border
    Global $hdll_gdi32 = DllOpen("gdi32.dll")
    Global $sFile = "auflösung.ini"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If Not FileExists($sFile) Then
    eingabe()
    Else
    lesen()
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func eingabe()
    $widht = InputBox("auflösung", "breite des side-display")
    $height = InputBox("auflösung", "höhe des side-display")
    $ausg_quali = InputBox("Bildqualität", "Es sind Werte zwischen 1 und 4 möglich." & @CRLF & "Je höher desto besser ist das Bild, aber auch die Systemauslastung")
    $Name1 = InputBox("Dein Name", "Besitzer")
    $Name2 = InputBox("Mein Name", "System")
    iniwrite_eingabe()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func lesen()
    iniread_lesen()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $widht <10 Then
    $widht = InputBox("auflösung", "breite des side-display")
    IniWrite($sFile, "widht", "widht", $widht)
    EndIf
    If $height <10 Then
    $height = InputBox("auflösung", "höhe des side-display")
    IniWrite($sFile, "height", "height", $height)
    EndIf
    If $ausg_quali <1 Then
    $ausg_quali = InputBox("Bildqualität", "Es sind Werte zwischen 1 und 4 möglich." & @CRLF & "Je höher desto besser ist das Bild, aber auch die Systemauslastung")
    IniWrite($sFile, "Qualität", "level", $ausg_quali)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    WinWait("Windows Media Center",'',5); warte auf das media center

    [/autoit] [autoit][/autoit] [autoit]

    #Region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=Yes and No, Icon=Critical, Timeout=10 ss
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(20,"Fehler","Media Center nicht gefunden oder verdeckt"& @CRLF & "Media Center versuchen zu starten?",10)
    Select
    Case $iMsgBoxAnswer = 6 ;Yes
    Run(@WindowsDir & "\ehome\ehshell.exe",@WindowsDir & "\ehome")
    WinWaitActive("Windows Media Center",'',5); warte auf das media center
    Case $iMsgBoxAnswer = 7 ;No
    CLOSE_error()
    Case $iMsgBoxAnswer = -1 ;Timeout
    CLOSE_error()
    EndSelect
    #EndRegion --- CodeWizard generated code End ---

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    FensterMessen()
    $border = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","CaptionHeight") ; titelleiste lesen
    $border = $border/15

    [/autoit] [autoit][/autoit] [autoit]

    $hDesktop = _WinAPI_GetDesktopWindow() ;Handle des Desktops hohlem
    $hDC_Desktop = _WinAPI_GetDC($hDesktop) ;Den Device Context vom Desktop ermitteln

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Desktop",$widht, $height, $SCpos0, $SCpos1, $WS_SIZEBOX + $WS_MAXIMIZEBOX + $WS_SYSMENU) ;Eine gui erstellen
    $hDC_GUI = _WinAPI_GetDC($hGUI) ;den DC davon ermitteln

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetBkColor(0x000000)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Guten = GUICtrlCreateLabel("Guten Tag " & $Name1 & "." & @CRLF &"Hier ist " & $Name2 &". "& @CRLF & @CRLF & "Ich wünsche dir viel Vergnügen",$widht/5,$height/3,$widht,$height/2)
    GUICtrlSetFont(-1, 20, 800, 0, "Hollywood Hills")
    GUICtrlSetColor(-1, 0x3399FF)
    Sleep(3000)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    DllCall($hdll_gdi32, "int", "SetStretchBltMode", "dword", $hDC_GUI, "int", $ausg_quali) ;den schönen blit modus anstellen

    [/autoit] [autoit][/autoit] [autoit]

    While(1)
    Sleep(1)
    MClesen()
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func MClesen()
    _WinAPI_StretchBlt($hDC_GUI,0, 0--$border, $widht,$height, $hDC_Desktop, $MCpos[0], $MCpos[1], $MCpos[2], $MCpos[3], $SRCCOPY) ; titelleiste wird von TOP abgezogen und das gemesseneMC wird in das gemessene/voreingestellte anzeigeprogramm eingepasst
    ;Der Befehl transveriert den Inhalt des Desktop DC's auf die GUI DC und passt dabei die grösse an
    ;das gegenstück ohne grössenanpassung ist _WinAPI_BitBlt
    $counter = $counter +1
    If $counter = 20 Then; alle 20 durchläufe wird
    FensterMessen() ; das fenster vom MC gemessen und als neuer richtwert übernommen
    $counter =0
    EndIf
    EndFunc ;==>MClesen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Author.........: Yashied
    Func _WinAPI_StretchBlt($hDestDC, $iXDest, $iYDest, $iWidthDest, $iHeightDest, $hSrcDC, $iXSrc, $iYSrc, $iWidthSrc, $iHeightSrc, $iRop)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Ret = DllCall($hdll_gdi32, 'int', 'StretchBlt', 'hwnd', $hDestDC, 'int', $iXDest, 'int', $iYDest, 'int', $iWidthDest, 'int', $iHeightDest, 'hwnd', $hSrcDC, 'int', $iXSrc, 'int', $iYSrc, 'int', $iWidthSrc, 'int', $iHeightSrc, 'dword', $iRop)

    [/autoit] [autoit][/autoit] [autoit]

    If (@error) Or (Not $Ret[0]) Then
    Return SetError(1, 0, 0)
    EndIf
    Return 1
    EndFunc ;==>_WinAPI_StretchBlt

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func FensterMessen() ;==>MC wird Vermessen
    $MCpos = WinGetPos("Windows Media Center"); äussere koordinaten des media center abfragen
    If Not @error Then
    ;~ MsgBox(0, "", "x: " & $MCpos[0] & "y: " & $MCpos[1]); oben links...
    ;~ MsgBox(0, "", "breite: " & $MCpos[2] & "höhe: " & $MCpos[3]); unten rechts... vom media center
    Else
    MsgBox(16,"Fehler","Media Center Fenster nicht gefunden")
    $fehler = "Media Center Fenster nicht gefunden"

    [/autoit] [autoit][/autoit] [autoit]

    CLOSE_error()
    EndIf
    EndFunc ;==> FensterMessen()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func iniwrite_eingabe() ;==>werte werden in die datei geschrieben
    IniWrite($sFile, "widht", "widht", $widht)
    IniWrite($sFile, "height", "height", $height)
    IniWrite($sFile, "Qualität", "level", $ausg_quali)
    IniWrite($sFile, "Benutzer", "Name", $Name1)
    IniWrite($sFile, "System", "Name", $Name2)
    EndFunc ;==>iniwrite_eingabe

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func iniread_lesen() ;==werte werden aus der datei gelesen
    $widht=IniRead($sFile, "widht", "widht",1)
    $height=IniRead($sFile, "height", "height",1)
    $SCpos0=IniRead($sFile, "x", "x",1)
    $SCpos1=IniRead($sFile, "y", "y",1)
    $SCpos2=IniRead($sFile, "breite", "breite",1)
    $SCpos3=IniRead($sFile, "höhe", "höhe",1)
    $ausg_quali=IniRead($sFile, "Qualität", "level",1)
    $Name1 = IniRead($sFile, "Benutzer", "Name",1)
    $Name2 = IniRead($sFile, "System", "Name",1)
    EndFunc ;==> iniwrite_close

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func CLOSEClicked() ;==>gute nacht ;)
    $SCpos = WinGetPos("Desktop"); äussere koordinaten des media center abfragen
    If Not @error Then
    iniwrite_close()
    EndIf
    ;benutzte resourcen freigeben
    _WinAPI_ReleaseDC($hGUI, $hDC_GUI)
    _WinAPI_ReleaseDC($hDesktop, $hDC_Desktop)
    Exit
    EndFunc ;==>CLOSEClicked

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func iniwrite_close() ;==>werte für das aneigefenster werden in die datei geschrieben
    IniWrite($sFile, "x", "x", $SCpos[0])
    IniWrite($sFile, "y", "y", $SCpos[1])
    IniWrite($sFile, "breite", "breite", $SCpos[2])
    IniWrite($sFile, "höhe", "höhe", $SCpos[3])
    EndFunc ;==>iniwrite_close

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func CLOSE_error() ;==>abbruch mit fehlerausgabe
    FileOpen("fehler.txt",1); fehlerdatei öffnen oder erstellen
    FileWriteLine("fehler.txt",""& @MDAY&"."&@MON&"."&@YEAR&"_"&@HOUR&":"&@MIN&" "&$fehler&@CRLF); datum und zeit und fehler reinschreiben
    FileClose("fehler.txt")
    _WinAPI_ReleaseDC($hGUI, $hDC_GUI)
    _WinAPI_ReleaseDC($hDesktop, $hDC_Desktop)
    DllClose($hdll_gdi32)
    Exit
    EndFunc ;==>CLOSE_error

    [/autoit]
  • screencapture eines vollbild programms

    • Maximus1
    • 29. Mai 2011 um 03:48

    ich danke dir.

    jetzt muss ich da erstmal versuchen durchzusteigen und meins mit deinem zu verbinden.
    in der zwischenzeit hatte ich ja nicht untätig herumgesessen und auf ergebnisse gewartet.

    falls es interessiert, hier das ich bisher habe.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ScreenCapture.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt("GUIOnEventMode", 1) ;Wechsle in den OnEvent Modus

    [/autoit] [autoit][/autoit] [autoit]

    Global $msg, $n, $MCpos, $SCpos, $SCpos0, $SCpos1, $bild, $widht, $height, $fehler

    [/autoit] [autoit][/autoit] [autoit]

    Global $sFile = "auflösung.ini"
    If Not FileExists($sFile) Then
    eingabe()
    Else
    lesen()
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func eingabe()
    $widht = InputBox("auflösung", "breite des sideshow-display")
    $height = InputBox("auflösung", "höhe des sideshow-display")
    IniWrite($sFile, "widht", "widht", $widht)
    IniWrite($sFile, "height", "height", $height)
    EndFunc ;==>eingabe

    [/autoit] [autoit][/autoit] [autoit]

    Func lesen()
    $widht = IniRead($sFile, "widht", "widht", 1)
    $height = IniRead($sFile, "height", "height", 1)
    $SCpos0 = IniRead($sFile, "x", "x", 1)
    $SCpos1 = IniRead($sFile, "y", "y", 1)
    If $height = 0 Then
    $height = InputBox("auflösung", "höhe des sideshow-display")
    IniWrite($sFile, "height", "height", $height)
    EndIf
    If $widht = 0 Then
    $widht = InputBox("auflösung", "breite des sideshow-display")
    IniWrite($sFile, "widht", "widht", $widht)
    EndIf
    EndFunc ;==>lesen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICreate("screencap", $widht, $height, $SCpos0, $SCpos1, $WS_SIZEBOX + $WS_MAXIMIZEBOX + $WS_SYSMENU) ; Erstellt ein GUI-Fenster welches mittig ausgerichtet wird.
    GUISetBkColor(0x000000)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WinWaitActive("[CLASS:eHome Render Window]"); warte auf das media center
    $MCpos = WinGetPos("Windows Media Center"); äussere koordinaten des media center abfragen
    If @error Then
    MsgBox(16, "Fehler", "Media Center Fenster nicht gefunden")
    $fehler = "Media Center Fenster nicht gefunden"
    CLOSE_error()
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW) ;GUI anzeigen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(1)
    screencapt()
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func screencapt()
    $bild = _ScreenCapture_Capture(@ScriptDir & "\screencap.jpg", $MCpos[0], $MCpos[1], $MCpos[2], $MCpos[3])
    $n = GUICtrlCreatePic(@ScriptDir & "\screencap.jpg", 0, 0, $widht, $height)
    ;~ GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
    Sleep(125)
    EndFunc ;==>screencapt

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func CLOSEClicked() ;geht nur wenn keine andere funktion arbeitet
    $SCpos = WinGetPos("screencap"); äussere koordinaten des anzeigefensters abfragen
    If Not @error Then
    IniWrite($sFile, "x", "x", $SCpos[0])
    IniWrite($sFile, "y", "y", $SCpos[1])
    IniWrite($sFile, "breite", "breite", $SCpos[2])
    IniWrite($sFile, "höhe", "höhe", $SCpos[3])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Exit
    EndFunc ;==>CLOSEClicked

    [/autoit] [autoit][/autoit] [autoit]

    Func CLOSE_error() ;geht nur wenn keine andere funktion arbeitet
    FileOpen("fehler.txt", 1); fehlerdatei öffnen oder erstellen
    FileWriteLine("fehler.txt", "" & @MDAY & "." & @MON & "." & @YEAR & "_" & @HOUR & ":" & @MIN & " " & $fehler & @CRLF); datum und zeit und fehler reinschreiben
    FileClose("fehler.txt")
    Exit
    EndFunc ;==>CLOSE_error

    [/autoit]

    ach wie toll, ich verstehe von dem um was es da geht nicht ein wort.

  • screencapture eines vollbild programms

    • Maximus1
    • 28. Mai 2011 um 22:36

    ich habe mir aus der hilfe ein kleines tool gebastelt welches alle 250ms einen screenshot erstellt.
    es soll als media center hilfstool laufen und das mediacenter auf einem kontrolldisplay anzeigen.
    so muss beim musik hören nicht der beamer oder fernseher eingeschaltet werden.
    soweit funktioniert es schon, aber ich weiss nicht weiter.


    [autoit]

    $bild = _ScreenCapture_Capture(@ScriptDir&"\screencap.jpg", 50, 50, 200, 200)
    $n = GUICtrlCreatePic(@ScriptDir&"\screencap.jpg", 0, 0, 0, 0)

    [/autoit]

    1. soll mit variablen funktionieren und nicht immer auf die disk schreiben.
    2. sollte nach möglichkeit ein geöffnetes vollbild programm (media center) erkennen und nur davon ein bild machen. so wie ich das sehe geht das aber wohl nicht mits class.
    3. das angezeigte bild fängt an zu flackern, das muss weg; aber wie?
    4. der speicherverbrauch steigt kontinuierlich, obwohl ich doch abgeschlossende funktionen habe. weiss jemand warum und wie ich dem entgegenwirken kann?

    damit ihr einen überblick habt hier nun endlich mein wunderwerk der programmierkunst. :rofl::rofl:

    [autoit]

    #include <ScreenCapture.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiConstantsEx.au3>
    #include <ScreenCapture.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt('MustDeclareVars', 1)
    Opt("GUIOnEventMode", 1) ;Wechsle in den OnEvent Modus

    [/autoit][autoit][/autoit][autoit]

    Global $gui, $guiPos, $pic, $picPos, $bild, $msg, $n, $a=0, $bild1
    Local $widht = InputBox("auflösung","widht")
    Local $height = InputBox("auflösung","widht")

    [/autoit][autoit][/autoit][autoit]

    GUICreate("screencap", $widht, $height, -1, -1, $WS_SIZEBOX + $WS_MAXIMIZEBOX + $WS_SYSMENU) ; Erstellt ein GUI-Fenster welches mittig ausgerichtet wird.
    GUISetBkColor(0x000000)

    [/autoit][autoit][/autoit][autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    GUISetState(@SW_SHOW) ;GUI anzeigen

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    Sleep(1)
    screencapt()
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func screencapt()
    $bild = _ScreenCapture_Capture(@ScriptDir&"\screencap.jpg", 1080, 502, 1912, 1011) ; testresolution
    $n = GUICtrlCreatePic(@ScriptDir&"\screencap.jpg", 0, 0, $widht-4, $height-4) ; -4 px rand
    Sleep(250) ; screenshot intervall
    EndFunc ;==>Example1

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func CLOSEClicked() ;geht nur wenn keine andere funktion arbeitet
    Exit
    EndFunc ;==>CLOSEClicked

    [/autoit]

    für eure hilfe wäre ich euch sehr dankbar.

    im anschluss an die probleme werde ich dann noch die eingaben der infoboxen per iniwrite/read speichern und evt. auch die aktualisierungsrate anpassbar machen.
    wie das geht weiss ich allerdings

  • bild in gui anzeigen und wechseln lassen

    • Maximus1
    • 18. April 2011 um 13:06

    den gesamten code möchte ich nicht zugänglich machen, auch wenn es die lösungsfindung erschwert.

  • bild in gui anzeigen und wechseln lassen

    • Maximus1
    • 18. April 2011 um 00:36

    ich habe mir ein kleines programm geschrieben, dass bilder aus dem netz lädt und in der gui anzeigen soll.
    klasse idee, scheiss unwissenheit.

    ich habe mit

    $pic = GUICtrlCreatePic("kopie.jpg", 8, 138)

    einen placeholder in der GUI angelegt, aber wenn mit

    DirCreate($dir & $sName[0])
    $bild = $dir & $sName[0] & $sFileName
    InetGet($sImageUrl, $dir & $sName[0] & $sFileName, 0, 1)
    GUICtrlSetImage($pic, $bild)

    das neue bild geladen und gespeichert wird, wird es nicht angezeigt.

    ich mache etwas falsch, aber ich weiss nicht was.
    könnt ihr mir bitte auf die sprünge helfen?

  • _IEBodyReadText (für campweb)

    • Maximus1
    • 16. Januar 2011 um 22:08

    dein browser mit vor und zurück

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    msgbox(0,"main","Achtung 2 ncoh nicht behobene bugs:"&@CRLF&@CRLF&"Verzögerung beim Start"&@CRLF&"verlauf zeigt nur besuchte Seiten an, die über -navigate to- besucht wurden")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $page = _IECreateEmbedded()
    $gui = GUICreate("Embedded Internet Explorer", 1024, 850, (@DesktopWidth - 1280) / 2, (@DesktopHeight - 1024) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    GUICtrlCreateObj($page, 10, 40, 1000, 700)
    $nav1 = GUICtrlCreateButton("Navigate to", 430, 800, 100, 30)
    $GUI_Button_ueber= guictrlcreatebutton(" site text ",300, 800)
    $menue=guictrlcreatemenu("Settings")
    $menueitem=guictrlcreatemenuitem("Always on Top",$menue)
    $recentfilesmenu = GUICtrlCreateMenu("Verlauf")
    $end=guictrlcreatebutton("End Session", 900, 800, 100, 30)
    $zurueck = GUICtrlCreateButton("zurueck", 8, 800, 33, 17, $WS_GROUP)
    $vor = GUICtrlCreateButton("vor", 56, 800, 33, 17, $WS_GROUP)
    WinSetOnTop("[ACTIVE]", "", 0)
    GUISetState(@SW_SHOW)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _IENavigate($page, "http://www.google.de")
    _IELoadWait ($page)
    $sText = _IEBodyReadText ($page)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    sleep(1000)
    ExitLoop()
    Case $msg = $GUI_Button_ueber
    MsgBox(0,"",""&$sText)
    Case $msg = $nav1
    $goto=inputbox("Goto","Type in the website you want to go")
    _IENavigate($page, $goto)
    _IELoadWait ($page)
    $sText = _IEBodyReadText ($page)
    If @error <> 1 Then GUICtrlCreateMenuItem($goto, $recentfilesmenu)
    Case $msg=$end
    sleep(1000)
    Exit
    Case $msg = $zurueck ; Send browser to previous page
    $page.GoBack
    Case $msg = $vor ; Send browser forward
    $page.GoForward
    EndSelect
    WEnd

    [/autoit]
  • dircopy bzw filecopy mit progressbar

    • Maximus1
    • 16. Januar 2011 um 21:48

    warum soll man nicht einfach mal etwas erweitern?
    ich nutze es ab jetzt und finde es sehr praktisch diese ordnerauswahl zu haben.
    davon abgesehen ist es doch wohl egal ob der thread gelöst ist oder nicht.
    muss man denn echt so engstirnig sein? ?(

  • dircopy bzw filecopy mit progressbar

    • Maximus1
    • 16. Januar 2011 um 21:03

    ich bin mal so frei und habe es leicht mit 2 ordnerauswahl fenstern erweitert.

    Spoiler anzeigen
    [autoit]

    CopyWithProgress(FileSelectFolder("sourcedir", "",1),FileSelectFolder("destinationdir", "",1)) ;kopiert den kompletten AutoIt-Ordner nach c:\test

    [/autoit] [autoit][/autoit] [autoit]

    #Include <Date.au3>
    Func CopyWithProgress($srcDir, $destDir) ;Original gigx siehe https://autoit.de/index.php?page…25989#post25989
    Local $tsBeginn = _NowCalc(), $tsDiff =-1, $tsRest ;eingefügt für Restdauer
    If StringRight($srcDir, 1) = "\" Then $srcDir = StringLeft($srcDir, StringLen($srcDir) - 1)
    If StringRight($destDir, 1) <> "\" Then $destDir = $destDir & "\"
    If Not FileExists($destDir) Then DirCreate($destDir)
    $srcSize = DirGetSize($srcDir, 1)
    $1_percent = $srcSize[0] / 100
    Run('XCOPY "'& $srcDir & '" "' & $destDir & '" /D /S /E /V /C /H /R /O /Y /F /G')
    ProgressOn("Advanced status of file copying", "", "",10,10)
    Do
    if $tsDiff < 0 Then Sleep(5000)
    $destSize = DirGetSize($destDir, 1)
    $tsDiff = _DateDiff("s",$tsBeginn,_NowCalc())
    $tsRest = round($tsDiff / ($destSize[0] / $1_percent) * 100,0) - $tsDiff
    ConsoleWrite($tsDiff & " " & $1_percent & " " & $tsRest &@CRLF)
    ProgressSet(Round($destSize[0] / $1_percent, 2), Round($destSize[0] / (1024 * 1024), 2) & " MB of " & Round($srcSize[0] / (1024 * 1024), 2)& " MB copied" & @CRLF _
    & $destSize[1] & " of " & $srcSize[1] & " Files copied." & @CRLF _
    & $destSize[2] & " of " & $srcSize[2] & " Folders copied.", Round($destSize[0] / $1_percent, 2) & "% - Done! " & $tsRest & " sec. Rest")
    Sleep($tsDiff)
    Until $destSize[0] >= $srcSize[0]
    MsgBox(0,"Fertig in " & $tsDiff & " sec.",Round($destSize[0] / (1024 * 1024), 2) & " MB of " & Round($srcSize[0] / (1024 * 1024), 2)& " MB copied" & @CRLF _
    & $destSize[1] & " of " & $srcSize[1] & " Files copied." & @CRLF _
    & $destSize[2] & " of " & $srcSize[2] & " Folders copied." & @CRLF & Round($destSize[0] / $1_percent, 2) & "% - Done! ")
    ProgressOff()
    EndFunc

    [/autoit]
  • Kleines Projekt: Referat/Vortragsgenerator

    • Maximus1
    • 16. Januar 2011 um 19:33

    ist der sinn nicht egal? wenn man aus dem was man schreibt was lernt hat es doch genug sinn.

  • Kleines Projekt: Referat/Vortragsgenerator

    • Maximus1
    • 16. Januar 2011 um 19:26

    der übersicht halber solltest du die aufgaben in funktionen stecken.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>
    Global $tt[1000]
    $oIE = _IECreateEmbedded()
    $gui_1 = GUICreate("Vortragsgenerator", 785, 482, 242, 147)
    $Input1 = GUICtrlCreateInput("Vortragsthema z.B.: Schwein, Otto Dix ...", 0, 0, 784, 21)
    $Button1 = GUICtrlCreateButton("Vortrag generieren", 0, 20, 784, 23, 0)
    $Group1 = GUICtrlCreateGroup("Vortrag:", 1, 43, 782, 437)
    $Edit1 = GUICtrlCreateEdit("", 3, 59, 777, 419)
    GUICtrlSetData(-1, "Edit1")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateObj($oIE, -150, -150, 0, 0)
    GUISetState(@SW_SHOW)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button1
    $name = GUICtrlRead($Input1)
    _IENavigate($oIE, "http://www.de.wikipedia.org/wiki/"&$name)
    _IELoadWait ($oIE)
    stringrepl()
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func stringrepl()
    $sText = _IEBodyReadText ($oIE)
    $tt[1] = StringReplace($sText,"aus Wikipedia, der freien Enzyklopädie", " ")
    $tt[2] = StringReplace($tt[1],"Inhaltsverzeichnis [Verbergen]", ""&@CRLF)
    $tt[3] = StringReplace($tt[2],"Von „http://de.", "")
    $tt[4] = StringReplace($tt[3],".org/wiki/", "")
    $tt[5] = StringReplace($tt[4],"Meine Werkzeuge", "")
    $tt[6] = StringReplace($tt[5],"Anmelden / Benutzerkonto erstellen Namensräume", "")
    $tt[7] = StringReplace($tt[6],"Artikel Diskussion VariantenAnsichten", "")
    $tt[8] = StringReplace($tt[7],"Lesen Quelltext anzeigen Versionsgeschichte AktionenSuche", "")
    $tt[9] = StringReplace($tt[8]," Navigation", "")
    $tt[10] = StringReplace($tt[9],"Hauptseite Über Themenportale Von A bis Z Zufälliger Artikel Mitmachen", "")
    $tt[11] = StringReplace($tt[10],"Hilfe Autorenportal Letzte Änderungen Kontakt Spenden Drucken/exportieren", "")
    $tt[12] = StringReplace($tt[11],"Buch erstellenAls PDF herunterladenDruckversionWerkzeuge", "")
    $tt[13] = StringReplace($tt[12],"Links auf diese Seite Änderungen an verlinkten Seiten Spezialseiten Permanenter Link Seite zitieren In anderen Sprachen", "")
    $tt[14] = StringReplace($tt[13],"Acèh Afrikaans Aragonés Ænglisc ??????? ???? Asturianu Aymar aru Žemaiteška ?????????? ?????????? (???????????) ????????? ????? ??????? Brezhoneg Bosanski Català Corsu Nehiyawewin / ??????? Cesky Cymraeg Dansk ???????? Emiliàn e rumagnòl English Esperanto Español Eesti Euskara ????? Suomi Français Nordfriisk Gaeilge Gàidhlig Galego Gaelg ?????? Hak-kâ-fa ????? Hrvatski Kreyòl ayisyen Magyar Interlingua Bahasa Indonesia Iñupiak Ido Íslenska Italiano ??? Basa Jawa ??????? ??? Kurdî Latina Lumbaart Lietuviu Latviešu ?????? ????? ???? Bahasa Melayu ?????????? ?????? ???????? Plattdüütsch Nedersaksisch ?????? ????? ???? Nederlands ?Norsk (nynorsk)? ?Norsk (bokmål)? Diné bizaad Occitan Kapampangan Deitsch Pälzisch Polski ?????? Português Româna ??????? ???? ???? Sardu Sicilianu Srpskohrvatski / ?????????????? ????? Simple English Slovencina Slovenšcina Soomaaliga ?????? / Srpski Svenska Kiswahili ????? ?????? ?????? ??? Tagalog Türkçe chiTumbuka ?????????? ???? Vèneto Ti?ng Vi?t West-Vlams Walon Winaray Wolof ?? ??", "")
    GUICtrlSetData($Edit1, $tt[14])
    EndFunc

    [/autoit]
  • _IEBodyReadText (für campweb)

    • Maximus1
    • 16. Januar 2011 um 19:14

    sieht schonmal gut aus, nun noch was für die übersichtlichkeit machen und man kann es verkaufen ^^

  • _IEBodyReadText (für campweb)

    • Maximus1
    • 16. Januar 2011 um 17:36

    was mich daran viel mehr interessiert ist wie man es zum beispiel schafft klickbare links und bilder in einem fenster zu erstellen.
    damit könnte man dann gruppen erstellen und dort die jeweilegen bereiche des seite darstellen und in einer childgui ausgeben.
    darin dann noch einen copy button und schon kannman sich die passagen die man haben will kopieren.

  • _IEBodyReadText (für campweb)

    • Maximus1
    • 16. Januar 2011 um 17:29
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>
    $oIE = _IECreateEmbedded()
    $gui = GUICreate("Embedded Internet Explorer", 1024, 850, (@DesktopWidth - 1280) / 2, (@DesktopHeight - 1024) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    GUICtrlCreateObj($oIE, 10, 40, 1000, 700)
    $GUI_Button_ueber = GUICtrlCreateButton("auslesen", 430, 800, 100, 30)
    GUISetState(@SW_SHOW)
    GUISetState()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _IENavigate($oIE, "http://www.amazon.de")
    _IELoadWait ($oIE)
    $sText = _IEBodyReadText ($oIE)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    MsgBox(16, "MAIN", "Tschüss", 2)
    ExitLoop()
    Case $msg = $GUI_Button_ueber
    MsgBox(0,"",""&$sText)
    EndSelect
    WEnd

    [/autoit]


    soweit so gut.

    was macht das teil?
    es erstellt ein fenster und läd darin die webseite.
    wenn man nun auslesen klickt wird des was man im browser lesen würde in einer textbox ausgegeben.

    mit _StringBetween kann man dann noch eingrenzen was ausgegeben werden soll.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™