Das mit der Maustaste gedrückt lassen hört sich gut an.
Allerdings schaffe ich es nicht wenn ich den Button drücke und die Maus auf einem anderen Fenster wieder loslasse, den Screenshot davon zu bekommen.
Aber den von anderen Fenstern nicht.
Es wird anscheinend das
Handle des Buttons genommen.
Wenn ich den Code in einen Timer dann geht es.
Das wäre dann aber ohne Maus ziehen.
jfheins: Ist dein Link nicht nur zum Drucken gedacht?
Delphi-Quellcode:
function FormularScreenShot(Bmp: TBitmap; h : hWnd): Boolean;
var
Rec: TRect;
iWidth, iHeight: Integer;
begin
with Bmp do try
GetWindowRect(h, Rec);
iWidth := Rec.Right - Rec.Left;
iHeight := Rec.Bottom - Rec.Top;
Width := iWidth;
Height := iHeight;
BitBlt(Canvas.Handle, 0, 0, iWidth, iHeight, GetWindowDC(h), 0, 0, SRCCOPY);
Result := True;
finally
ReleaseDC(h, GetWindowDC(h));
end;
end;
//Liefert Bild von dem Button
procedure TForm1.Button2Click(Sender: TObject);
var h :HWND;
begin
h:=WindowFromPoint(Mouse.CursorPos);
FormularScreenShot(Image1.Picture.Bitmap,h);
Image1.Repaint;
end;