Hi, ich möchte gerne einen Screenshot nur von einem Fenster machen.
Ich drücke auf den Button lasse die Maustaste gedrückt und lasse sie auf einem anderen Fenster los.
Die Anwendung nimmt den Screenshot vom ganzen Bildschirm und stellt danach das Fenster frei.
Meine Methode funktioniert auch ganz gut, in den beiden Images wird das richtige Bild angezeigt, allerdings kann ich es nur 1x ausführen. Beim 2ten mal gibt es Fehler.
Das gleiche Problem gibt es wenn ich es einmal ausgeführt habe und dann die ganze Anwendung schließen will.
Scheint ein größerer Fehler zu sein?
Fehler:
http://s7.directupload.net/file/d/2582/cw6v8mp2_jpg.htm
Delphi-Quellcode:
//Fertigt einen Screenshot vom Desktop an
procedure MakeScreenShot(const ATarget: TBitmap);
var
DesktopDC: HDC;
begin
DesktopDC := CreateDC('DISPLAY', nil, nil, nil);
try
ATarget.PixelFormat := pfDevice;
ATarget.Width := Screen.Width;
ATarget.Height := Screen.Height;
BitBlt(ATarget.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DesktopDC, 0, 0, SRCCOPY);
finally
DeleteDC(DesktopDC);
end;
end;
procedure TForm1.Button9MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var p:TWindowPlacement ;
h :HWND;
SourceBitmap : TBitmap;
TargetBitmap : TBitmap;
Cut : TRect;
begin
h:=WindowFromPoint(Mouse.CursorPos);
p.Length:=SizeOf(TWindowPlacement);
GetWindowPlacement(h,@p);
MakeScreenShot(Image1.Picture.Bitmap);
Image1.Repaint;
SourceBitmap:= TBitmap.Create;
TargetBitmap:= TBitmap.Create;
SourceBitmap:=Image1.Picture.Bitmap;
Cut.Left := p.rcNormalPosition.Left;
Cut.Top := p.rcNormalPosition.Top;
Cut.Right := p.rcNormalPosition.Right;
Cut.Bottom := p.rcNormalPosition.Bottom;
try
TargetBitmap.Width := Cut.Right - Cut.Left;
TargetBitmap.Height := Cut.Bottom - Cut.Top;
BitBlt(TargetBitmap.Canvas.Handle, 0, 0, Cut.Right, Cut.Bottom, SourceBitmap.Canvas.Handle, Cut.Left, Cut.Top, SRCCOPY);
SourceBitmap.Canvas.Refresh;
Image2.Picture.Bitmap:=TargetBitmap;
Image2.Repaint;
JPEG;
finally
SourceBitmap.Free;
TargetBitmap.Free;
end;
end;
Soll:
http://s1.directupload.net/file/d/2582/e2aoyt2m_jpg.htm