![]() |
Hintergrundwindow (hidden) kopieren und als BMP speichern
Hallo,
ich hätte ein Problem und würde mich freuen, wenn mir jemand helfen kann. Ich möchte in Delphi einen Code schreiben. Dieser Code soll ein Fenster (Window) welches keinen Focus besitzt (hinter einer Anwendung ist) kopieren und die Kopie als Bild speichern. Eine Art Screenshot von einem hidden Window... Kann mir jemand diesbezüglich weiterhelfen? Vielen Dank im Voraus! Gruß Karle |
Re: Hintergrundwindow (hidden) kopieren und als BMP speicher
Hab das Thema gerade durch die Suche gefunden, da ich selbst sowas machen möchte.
@Karle_01: Hast du es schon geschafft? Wenn nicht, weiß jemand anderes, wie man das hinbekommt? Auf ![]() P@Tti |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
Ich hab das selbe Problem, da ich keinen Doppelpost machen möchte wärme ich mal diesen doch recht alten Threat auf. ich habe diverse funktionen dazu gefunden aber keine hatt funktioniert.
Hat noch nie jemand sowas gemacht? |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
Mit
![]() |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
Danke für die Antwort, ich habe das mal in die funktion eingebaut, die mit nicht versteckten fenstern bei mir super klappt:
Delphi-Quellcode:
sieht nun so aus geht aber noch nicht, das TImage bleibt leer sofern das fenster versteckt ist.
function ScreenshotHidden(wnd: HWND; const bmp: TBitmap): Boolean;
var PrintWindow: function(sHandle: HWND; dHandle: HDC; nFlags: UINT): BOOL; stdcall; rec: TRect; begin Result := False; if dllh <> 0 then begin @PrintWindow:= GetProcAddress(dllh , 'PrintWindow'); if @PrintWindow <> nil then begin SendMessage(wnd, WM_PRINT, 0, 0); GetWindowRect(wnd, rec); //has to stay dynamic bmp.Width := rec.Right - rec.Left; bmp.Height := rec.Bottom - rec.Top; result := PrintWindow(wnd, bmp.Canvas.Handle, 0); end; end; end; PS: die dll wird bei mir statisch im OnCreate event der form geladen. |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
die korrekte Implementierung findest Du dort:
![]() verdeckte oder außerhalb des Screen angezeigte Fenster (z.B. left -2000) bekommst Du so, versteckte im Sinne von hide nicht. |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
Danke für den Link aber die funktion in dem threat ist ja gleich wie meine nur eben wird die dll dynamisch geladen.
Der Helfer in dem Threat verweist ja auf einen threat bei dem eine dll in einen spieleprozess injected wird, muss ich zwangsweise eine dll injecten um an mein hidden window bitmap zu kommen? Wenn ja, mit was könnte ich soetwas realisieren? die person im threat hatt den source leider nicht veröffentlicht. Ich hab auch gelesen dass es eine möglichkeit gibt dem versteckten Fenster zu sagen es soll sich anstatt auf den desktop in meinen TImage bereich zeichnen, weiss vielleicht jemand was dazu? |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
Deine ist an einigen Stellen verdreht und das Locking fehlt (ok, brauchst Du ohne Threads nicht).
AFAIK wäre das einzige was Dir bleibt des Fenster z.B. nach -2000 zu verschieben, anzuzeigen, zu verbergen und die Position zurückzusetzen. |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
Mal ein Hinweis dazu: TForm hat die Function GetFormImage, diese liefert ein Bitmap zurück, welches dann durch SaveToFile gespeichert werden kann.
Delphi-Quellcode:
In meinem Delphi 2007 klappt das auch mit nicht sichtbaren Forms.
...
var tmpBitmap: TBitmap; ... tmpBitmap:=myForm.GetFormImage; tmpBitMap.SaveToFile('test.bmp') ... tmpBitmap.Free; |
AW: Hintergrundwindow (hidden) kopieren und als BMP speichern
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 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