Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Grafik / Sound / Multimedia (https://www.delphipraxis.net/21-library-grafik-sound-multimedia/)
-   -   Delphi Screenshot des eigenen Anwendungsfensters erstellen (https://www.delphipraxis.net/62309-screenshot-des-eigenen-anwendungsfensters-erstellen.html)

Matze 2. Feb 2006 18:54


Screenshot des eigenen Anwendungsfensters erstellen
 
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:

Delphi-Quellcode:
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.

marabu 2. Feb 2006 19:13

Re: Screenshot des eigenen Anwendungsfensters erstellen
 
Diese vielen komplizierten Befehle sind beindruckend, aber ich mache es lieber so:

Delphi-Quellcode:
procedure SaveFormImage(f: TForm; fn: TFileName);
begin
  with f.GetFormImage do
  begin
    SaveToFile(fn);
    Free;
  end;
end;
Freundliche Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz