mOzZzI hat
hier einen Code veröffentlicht, der einen Screenshot der eigenen Anwendung erstellt und speichert. Ich habe den Code leicht modifiziert:
Delphi-Quellcode:
procedure SaveAppScreen(const SaveBmpFileName: string);
var
Bitmap: TBitmap;
Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
try
Canvas.Handle := GetWindowDC(0);
try
Bitmap := TBitmap.Create;
try
Bitmap.Width := Application.MainForm.Width;
Bitmap.Height:= Application.MainForm.Height;
Bitmap.PixelFormat := pfDevice;
BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Application.MainForm.Width), Pred(
Application.MainForm.Height), Canvas.Handle,
Application.MainForm.Left, Application.MainForm.Top,
Bitmap.Canvas.CopyMode);
Bitmap.SaveToFile(SaveBmpFileName);
finally
FreeAndNil(Bitmap);
end;
finally
ReleaseDC(0, Canvas.Handle);
end;
finally
FreeAndNil(Canvas);
end;
end;
Möglicher Aufruf:
SaveAppScreen('D:\Screenie.bmp');
Der Screenshot ist allerdings relativ groß, wie man es von Bitmaps gewohnt ist. Mit
dieser Prozedur lässt sich ein Bitmap in eine JPEG-Datei konvertieren, um die Dateigröße - und bedingt die Qualität - zu reduzieren.