So habs mir mal angeguckt, hab aber noch ne Frage:
Ich habe mir jetzt eine Prozedure rausgesucht...
Delphi-Quellcode:
procedure ScreenToFile(aFileName: string);
var
Bitmap: TBitmap;
Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
try
Canvas.Handle := GetWindowDC(0);
try
Bitmap := TBitmap.Create;
try
Bitmap.Width := Screen.DesktopWidth;
Bitmap.Height:= Screen.DesktopHeight;
Bitmap.PixelFormat := pfDevice;
(*
Bitmap.Canvas.CopyRect(Screen.DesktopRect, Canvas, Screen.DesktopRect);
Anstatt der folgenden Zeile, kann auch die CopyRect Funktion genutzt werden.
Die CopyRect-Funktion nutzt zusätzlich ein paar Schutzmechanismen, welche für
ScreenShots nicht notwendig sind. Ausserdem greift die CopyRect-Funktion auf
StretchBlt-Funktion zurück, welche langsamer als BitBlt ist.
*)
BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(
Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft,
Screen.DesktopTop, Bitmap.Canvas.CopyMode);
Bitmap.SaveToFile(aFileName);
finally
Bitmap.Free;
end;
finally
ReleaseDC(0, Canvas.Handle);
end;
finally
Canvas.Free;
end;
end;
... und rufe die hiermit auf...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
screentofile('testscreen');
end;
...aber wo speichert die Anwendung den Screenshot jetzt hin ????
EDIT: Ach habs schon rausgefunden...war mal wieder zu blöd...
Die Aufrufprozedure muss so heißen...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
screentofile('D:\testscreen.bmp');
end;