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!