Hintergrund-Fenster ScreenCapture

  • Hi, ich versuche ein Hintergrundfenster abzufotografieren. Dank chip habe ich dazu eine Funktion aus dem englischen Forum. Irgendwie schaffe ich es aber nicht, sie richtig anzuwenden; die Datei wird zwar erstellt, auch in der richtigen Größe, sie ist jedoch komplett schwarz.

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <GDIPlus.au3>
    _GDIPlus_Startup()
    $hGUI=WinGetHandle("Posteingang")
    $hBitmap = _CaptureWindow ($hGUI)
    $hBitmap2=_GDIPlus_BitmapCreateFromHBITMAP ($hBitmap)
    _GDIPlus_ImageSaveToFile($hBitmap2,@MyDocumentsDir & "\GDIPlus_Image.jpg")
    Func _CaptureWindow($hWnd)
    Local $WM_PAINT = 0x000F
    Local $WM_PRINT = 0x317
    Local $PRF_CHILDREN = 0x10; Draw all visible child windows.
    Local $PRF_CLIENT = 0x4 ; Draw the window's client area.
    Local $PRF_OWNED = 0x20 ; Draw all owned windows.
    Local $PRF_NONCLIENT = 0x2 ; Draw the window's Title area.
    Local $PRF_ERASEBKGND = 0x8 ; Erases the background before drawing the window

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

    Local $pos = WinGetPos($hWnd)
    Local $Width = $pos[2]
    Local $Height = $pos[3]

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

    Local $hDC = _WinAPI_GetDC($hWnd)
    Local $memDC = _WinAPI_CreateCompatibleDC($hDC)
    Local $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $Width, $Height)

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

    _WinAPI_SelectObject ($memDC, $memBmp)

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

    Local $Ret = _SendMessage($hWnd, $WM_PAINT, $memDC, 0)
    $Ret = _SendMessage($hWnd, $WM_PRINT, $memDC, BitOR($PRF_CHILDREN , $PRF_CLIENT, $PRF_OWNED, $PRF_NONCLIENT, $PRF_ERASEBKGND))

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

    Local $hBMP=_GDIPlus_BitmapCreateFromHBITMAP($memBmp)
    Local $hHBITMAP=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hBMP)

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

    _WinAPI_DeleteObject($hDC)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    _WinAPI_DeleteDC($memDC)
    _WinAPI_DeleteObject ($memBmp)
    _WinAPI_DeleteDC($hDC)

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

    Return $hHBITMAP
    EndFunc ;==>_CaptureWindow()

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    Einmal editiert, zuletzt von L3viathan (1. November 2010 um 13:49) aus folgendem Grund: Lösung durch H2112

  • Hi, so bekomme ich ein bis auf den schwarzen Rand recht hübsches Bild einer leeren GUI:

    [autoit]

    #include <WinAPI.au3>
    #include <GDIPlus.au3>
    _GDIPlus_Startup()
    $hGUI = GUICreate("Test")
    ;~ $hGUI=WinGetHandle("Posteingang")
    $hBitmap = _CaptureWindow ($hGUI)
    $hBitmap2=_GDIPlus_BitmapCreateFromHBITMAP ($hBitmap)
    _GDIPlus_ImageSaveToFile($hBitmap2,@ScriptDir & "\GDIPlus_Image.jpg")
    Exit

    [/autoit]


    Hast Du das Fensterhandle gecheckt?

  • Ich hatte da noch sowas in Erinnerung, und es dann gesucht. ;)

    Hier bitte:
    https://autoit.de/index.php?page=Thread&amp;threadID=20242

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Bitte. :)

    Wenn das die Antwort war, kannst den Thread doch auf gelöst stellen. :P

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%