Vielleicht ist das ja schon anderweitig beschrieben, dann sorry. Ich habe schon seit Jahren folgende Routine im Einsatz, die einen bestimmten Bereich des Desktop in eine Bitmap kopiert:
Delphi-Quellcode:
procedure DesktopScreenShot(DestBitmap: TBitmap; SourceRect: TRect);
var
DC: HDC;
wnd: HWND;
begin
wnd := GetDesktopWindow;
DC := GetDC(wnd);
try
DestBitmap.SetSize(SourceRect.Width, SourceRect.Height);
BitBlt(DestBitmap.Canvas.Handle, 0, 0, SourceRect.Width, SourceRect.Height,
DC, SourceRect.Left, SourceRect.Top, SRCCOPY) ;
finally
ReleaseDC(wnd,
DC);
end;
end;