Screenshot von einem bestimmten Fenster

  • Hallo Zusammen!

    Ich suche schon länger nach einer Lösung und habe keine Antwort darauf gefunden.

    Gibt es die Möglichkeit ein Screenshot von einem minimierten Fenster zu machen? Ja es gibt sie bestimmt, nur wie? von mir aus kann man das fenster auch schnell öffnen und dann den screenshot machen und dann wieder schliessen, das sollte aber sehr schnell passieren. Das Ziel ist es dann eine exe datei im Taskmanager zu haben welche die exe dann z.b. jede stunde ausführt, von einem bestimmten programm ein screenshot macht und dann abspeichert. egal ob das fenster grad minimiert ist oder nicht.

    danke für die hilfe


    gruss myllertym

  • @myllertym:

    Ich glaube die Funktion

    [autoit]


    _ScreenCapture_CaptureWnd()

    [/autoit]


    Sollte dir Helfen

    Beispiel:

    [autoit]


    #include <ScreenCapture.au3>

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

    $hWnd_Window = WinGetHandle("Titel hier Eintragen", "")

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

    _ScreenCapture_CaptureWnd(@MyDocumentsDir & "\Test.bmp", $hWnd_Window)

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

    Exit

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

    Liebe Grüße von chip.de

  • Hier, was mir so ad hoc eingefallen ist:

    [autoit]


    ;coded by UEZ
    #include <ScreenCapture.au3>

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

    $title = "Unbenannt - Editor" ;Beispiel mit Notepad
    $list = WinList() ;liste alle Fenster
    If $list[0][0] > 0 Then ;wenn Liste nicht leer, dann weiter
    $i = 1
    Do
    If StringInStr($list[$i][0], $title) > 0 Then ;finde erstes Notepad Fenster
    $hWnd = $list[$i][1] ;merke Handel vom Fenster
    WinSetState($hWnd, "", @SW_RESTORE) ;stelle wieder das Notepad Fenster her, da minimiert der Screenshot sonst schwarz wäre
    Sleep(250) ;warte auf das Notepad Fenster
    _ScreenCapture_CaptureWnd(@ScriptDir & "\notepad.jpg", $hWnd) ;mache ein Foto und speichere das Bild ab
    WinSetState($hWnd, "", @SW_MINIMIZE) ;minimiere das Fenster wieder
    ExitLoop ;verlasse Schleife
    EndIf
    $i += 1
    Until $i >= $list[0][0] ;suche solange bis alle Fenster durchsucht sind!
    EndIf
    Exit

    [/autoit]

    Vorher Notepad starten und minimieren (Simulation).

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    3 Mal editiert, zuletzt von UEZ (21. Januar 2010 um 20:39)

  • Um das ganze zu beschleunigen, würde ich dazu raten, die Animation beim Fenstervergrößern/verkleinern auszustellen

    Zitat

    Animation der Fenster beim Minimieren/Maximieren ausstellen

    Wenn Sie die Größe eines Fensters einer Anwendung minimieren oder maximieren, wird dieser Vorgang per Defaulteinstellung durch eine kleine Animation unnötig verzögert. Sie sehen, wie das Fenster sich vergrößert oder verkleinert. Durch Deaktivierung der Animationsfunktion wird unter HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics der Schlüssel MinAnimate von 1 auf 0 umgestellt. Die Auswirkung stellen Sie aber eventuell wie auch bei einigen anderen Registrykey-Änderungen erst nach der nächsten Anmeldung oder sogar erst nach dem nächsten Neustart fest. Anwendungsfenster werden dann ohne jede Verzögerung minimiert oder maximiert.

    Spart sicherlich einiges an Zeit...