![]() |
Screenshot von 3D Anwendung
Hallo,
ich versuche gerade ein Screenshot von einzelnen Fenstern zu erstellen und bei 3D Anwendungen(Spiele) funktioniert das irgendwie nicht. Ich habe folgenden Code:
Delphi-Quellcode:
Code von hier:
function ScreenshotHidden(wnd: HWND; const bmp: TBitmap): Boolean;
var rec: TRect; //zum Zwischenspeichern der Fenstergröße dllh: THandle; //Handle der user32.dll PrintWindow: function(sHandle: HWND; dHandle: HDC; nFlags: UINT): BOOL; stdcall; //Prototyp der verwendeten Funktion begin Result := False; //Rückgabewert initialisieren dllh := GetModuleHandle(user32); //dll dynamisch laden... if dllh <> 0 then begin @PrintWindow:= GetProcAddress(dllh , 'PrintWindow'); //die Funktionsadresse aus der Dll laden... if @PrintWindow <> nil then begin GetWindowRect(wnd, rec); //Größe des Fensters auslesen... bmp.Width := rec.Right - rec.Left; //...und die Bitmap-Größe anpassen bmp.Height := rec.Bottom - rec.Top; bmp.Canvas.Lock; //Zugriff auf den Canvas für andere Threads blockieren try result := PrintWindow(wnd, bmp.Canvas.Handle, 0); //Das Fenster zeichnet sich selbst in das HDC des Bitmaps finally bmp.Canvas.Unlock; //Zugriff wieder erlauben end; end; end; end; var wnd: HWnd; begin wnd := FindWindow('Notepad',nil); //Handle vom Notepad-Fenster ScreenshotHidden(wnd, Image1.Picture.Bitmap); Image1.Invalidate; end; ![]() Kann mir da einer helfen, dass ich auch von einer 3D Anwendung Screenshots erstellen kann? |
Re: Screenshot von 3D Anwendung
Das funktioniert nicht, da Spiele (die ja OpenGL oder DirectX benutzen) direkt in den Graphikkarten-RAM schreiben. Vielleicht hilft dir das hier weiter:
![]() |
Re: Screenshot von 3D Anwendung
Habe die Funktion unter XP zum Laufen bekommen. Dann die Exe auf einer 2000er Maschine gestartet. Dort bekomme ich keinen Screenshot. Ist das nur für XP ausgelegt?
Nachtrag 10.02.09 Funktion @PrintWindow:= GetProcAddress(dllh , 'PrintWindow'); //die Funktionsadresse aus der Dll laden... wird mit Nil beendet. Was heißt das nun? Muss ich eine DLL mit ins Programmverzeichnis oder DLL Verzeicnis kopieren? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz