Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Screenshot generieren? (https://www.delphipraxis.net/103986-screenshot-generieren.html)

Random Company 25. Nov 2007 18:11


Screenshot generieren?
 
Hi,

gibts ne Funktion oder so, womit ich n Screenshot vom aktuellen Bildschirm erstellen kann?
Hab per Suchfunktion "Screenshot" nichts passendes gefunden... :)

Valle 25. Nov 2007 18:16

Re: Screenshot generieren?
 
:gruebel: ScreenshotScreenshot:

http://www.delphipraxis.net/internal...ect.php?t=8024
http://www.delphipraxis.net/internal...ect.php?t=2905
http://www.delphipraxis.net/internal_redirect.php?t=151

Mit freundlichen Grüßen,

Valle

taaktaak 25. Nov 2007 18:20

Re: Screenshot generieren?
 
Moin, Moin.
Hier ein CodeSchnipsel, habe ich noch nie benutzt und kann daher nicht sagen ob das funktioniert. Die Quelle kann ich auch nicht mehr benennen - ist jeden falls nicht von mir!

Die Prozedur speichert im übergebenen TBitmap ein Abbild des aktuellen Windows-Desktops. Wenn man einen Screenshot eines bestimmten Fensters oder Controls haben möchte, besorgt man sich das Handle dieses Fensters und ermittelt dann den Bildauschnitt mit der API-Funktion GetWindowRect(..). Diesen Ausschnitt kopiert man dann einfach aus dem Desktop-Screenshot.
Delphi-Quellcode:
procedure ScreenCapture(Bmp:TBitmap);
var DeskWnd : HWnd;
    DeskDC : HDC;
    DeskCv : TCanvas;
    R      : TRect;
    W,H    : Integer;
begin
  if Bmp=nil then exit;

  DeskWnd:=GetDesktopWindow;
  DeskDC :=GetWindowDC(DeskWnd);
  DeskCv :=TCanvas.Create;
  DeskCv.Handle:=DeskDC;
  W:=Screen.Width;
  H:=Screen.Height;
  R:=Bounds(0,0,W,H);

  try
    Bmp.HandleType    :=bmDIB;
    Bmp.PixelFormat   :=pf24Bit;
    Bmp.Width         :=W;
    Bmp.Height        :=H;
    Bmp.Canvas.CopyMode:=cmSrcCopy;
    Bmp.Canvas.CopyRect(R,DeskCv,R);
 
  finally
    DeskCv.Free;
    ReleaseDC(DeskWnd,DeskDC);
    end;
end;
Gruß Ralph

PS : Gib bitte Info, wenn's damit funktioniert!

rollstuhlfahrer 25. Nov 2007 19:36

Re: Screenshot generieren?
 
Also ich benutze auch eine Funktion um einen Screenshot zu machen...

Zitat:

Delphi-Quellcode:
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;
Der schnipsel ist ein Tipp von dsdt
Aufgerufen wird diese mit:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  MakeScreenShot(Image1.Picture.Bitmap);
  Image1.Repaint;
end;
Ansonsten einfach mal googeln
Bei Google suchenScreenshot Windows Delphi

rollstuhlfahrer

SirThornberry 25. Nov 2007 19:46

Re: Screenshot generieren?
 
und beide Schnipsel würde ich nicht verwenden weil gar nicht geprüft wird ob die Funktionen erfolgreich aufgerufen werden konnten

rollstuhlfahrer 26. Nov 2007 15:42

Re: Screenshot generieren?
 
das kann dann der Nutzer dieser Schnipsel selbst hinzufügen, oder lassen. Mein Schnipsel funktioniert .

rollstuhlfahrer


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.

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