![]() |
Suche "echte" Screenshot Funktion
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich verwende diese Funktion, um einen Screenshot zu erzeugen
Delphi-Quellcode:
Jetzt ist mir aufgefallen, dass dies kein "echter" Screenshot ist. Ich hänge zwei Beispiele an
procedure ScreenShot(Bild: TBitMap);
var c: TCanvas; r: TRect; begin c := TCanvas.Create; c.Handle := GetWindowDC(GetDesktopWindow); try r := Rect(0, 0, Screen.Width, Screen.Height); Bild.Width := Screen.Width; Bild.Height := Screen.Height; Bild.Canvas.CopyRect(r, c, r); finally ReleaseDC(0, c.Handle); c.Free; end; end; Beim einen Screenshot habe ich die "Druck" Taste verwendet, um einen Screenshot zu erzeugen. Da ist dann alles dabei, was auch zu sehen ist. Den anderen Screenshot habe ich mit dem Delphi Code erzeugt. Da fehlen die Fenster im Paint Programm, es ist also kein "echter" Screenshot Hat da jemand einen Tipp/ eine Idee? Danke Christof |
AW: Suche "echte" Screenshot Funktion
Hatte in einem Screenshot-Programm von mir folgenden Code erfolgreich im Einsatz:
Delphi-Quellcode:
var
DesktopDC: HDC; const CAPTUREBLT = $4000000; procedure TakeScreenshot(Dest: TBitmap; const CaptureRect: TRect); begin Dest.SetSize(CaptureRect.Right-CaptureRect.Left, CaptureRect.Bottom-CaptureRect.Top); BitBlt(Dest.Canvas.Handle, 0, 0, Dest.Width, Dest.Height, DesktopDC, CaptureRect.Left, CaptureRect.Top, SRCCOPY or CAPTUREBLT); end; initialization DesktopDC := CreateDC('DISPLAY', nil, nil, nil); finalization DeleteDC(DesktopDC) |
AW: Suche "echte" Screenshot Funktion
Ich verwende folgendes:
Delphi-Quellcode:
procedure TRTLCommon.WriteScreenshot;
const CAPTUREBLT = $40000000; var hdcScreen: HDC; hdcCompatible: HDC; bmp: TBitmap; hbmScreen: HBITMAP; DeskHeight, DeskWidth: Integer; begin hdcScreen := CreateDC('DISPLAY', nil, nil, nil); hdcCompatible := CreateCompatibleDC(hdcScreen); try DeskHeight:= Screen.DesktopHeight; DeskWidth:= Screen.DesktopWidth; hbmScreen := CreateCompatibleBitmap(hdcScreen, DeskWidth, DeskHeight); try SelectObject(hdcCompatible, hbmScreen); bmp := TBitmap.Create; try bmp.Handle := hbmScreen; BitBlt(hdcCompatible, 0, 0, bmp.Width, bmp.Height, hdcScreen, 0, 0, SRCCOPY or CAPTUREBLT); bmp.Save.... finally bmp.Free; end; finally DeleteObject(hbmScreen); end; finally DeleteDC(hdcScreen); DeleteDC(hdcCompatible); end; end; |
AW: Suche "echte" Screenshot Funktion
Interessant ist, dass wir unterschiedliche CAPTUREBLT-Konstanten haben. Allerdings ist es wohl meine, die falsch ist. :oops: Ist mir wahrscheinlich nicht aufgefallen, weil ich immer Aero aktiviert hatte, wo es meines Wissens nach keinen Unterschied macht.
|
AW: Suche "echte" Screenshot Funktion
Danke :thumb:
|
AW: Suche "echte" Screenshot Funktion
GetFormImage ?
|
AW: Suche "echte" Screenshot Funktion
Zitat:
|
AW: Suche "echte" Screenshot Funktion
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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