Einzelnen Beitrag anzeigen

Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

Screenshot von 3D Anwendung

  Alt 18. Jan 2009, 10:26
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:
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;
Code von hier: http://www.delphipraxis.net/internal...ght=screenshot

Kann mir da einer helfen, dass ich auch von einer 3D Anwendung Screenshots erstellen kann?
  Mit Zitat antworten Zitat