Ok, das kommt davon, wenn man neben der Arbeit etwas macht ...
ich denke der Code kommt näher an die Anforderung heran.
Delphi-Quellcode:
function CompleteShot(wnd: HWND;
const bmp: TBitmap): Boolean;
var
rec: TRect;
dllh: THandle;
PrintWindow:
function(sHandle: HWND; dHandle: HDC; nFlags: UINT): BOOL;
stdcall;
begin
Result := False;
dllh := GetModuleHandle(user32);
if dllh <> 0
then
begin
@PrintWindow:= GetProcAddress(dllh , '
PrintWindow');
if @PrintWindow <>
nil then
begin
GetWindowRect(wnd, rec);
bmp.Width := rec.Right - rec.Left;
bmp.Height := rec.Bottom - rec.Top;
bmp.Canvas.Lock;
try
result := PrintWindow(wnd, bmp.Canvas.Handle, 0);
finally
bmp.Canvas.Unlock;
end;
end;
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
var
Bitmap:TBitmap;
begin
Bitmap:= TBitmap.Create;
CompleteShot(
Handle, Bitmap);
try
Clipboard.Assign(Bitmap);
finally
Bitmap.Free;
end;
Showmessage('
Eine Hardcopy wurde in die Zwischenablage kopiert.');
end;