Thema: Delphi Screenshot generieren?

Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: Screenshot generieren?

  Alt 25. Nov 2007, 18:20
Moin, Moin.
Hier ein CodeSchnipsel, habe ich noch nie benutzt und kann daher nicht sagen ob das funktioniert. Die Quelle kann ich auch nicht mehr benennen - ist jeden falls nicht von mir!

Die Prozedur speichert im übergebenen TBitmap ein Abbild des aktuellen Windows-Desktops. Wenn man einen Screenshot eines bestimmten Fensters oder Controls haben möchte, besorgt man sich das Handle dieses Fensters und ermittelt dann den Bildauschnitt mit der API-Funktion GetWindowRect(..). Diesen Ausschnitt kopiert man dann einfach aus dem Desktop-Screenshot.
Delphi-Quellcode:
procedure ScreenCapture(Bmp:TBitmap);
var DeskWnd : HWnd;
    DeskDC : HDC;
    DeskCv : TCanvas;
    R : TRect;
    W,H : Integer;
begin
  if Bmp=nil then exit;

  DeskWnd:=GetDesktopWindow;
  DeskDC :=GetWindowDC(DeskWnd);
  DeskCv :=TCanvas.Create;
  DeskCv.Handle:=DeskDC;
  W:=Screen.Width;
  H:=Screen.Height;
  R:=Bounds(0,0,W,H);

  try
    Bmp.HandleType :=bmDIB;
    Bmp.PixelFormat :=pf24Bit;
    Bmp.Width :=W;
    Bmp.Height :=H;
    Bmp.Canvas.CopyMode:=cmSrcCopy;
    Bmp.Canvas.CopyRect(R,DeskCv,R);
 
  finally
    DeskCv.Free;
    ReleaseDC(DeskWnd,DeskDC);
    end;
end;
Gruß Ralph

PS : Gib bitte Info, wenn's damit funktioniert!
Ralph
  Mit Zitat antworten Zitat