AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Hintergrundwindow (hidden) kopieren und als BMP speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Hintergrundwindow (hidden) kopieren und als BMP speichern

Ein Thema von Karle_01 · begonnen am 13. Apr 2007 · letzter Beitrag vom 19. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Karle_01

Registriert seit: 13. Apr 2007
1 Beiträge
 
#1

Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 13. Apr 2007, 13:53
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
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Hintergrundwindow (hidden) kopieren und als BMP speicher

  Alt 28. Jun 2007, 18:04
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 dieser Seite gibt es ein Programm, das sowas beispielsweise kann. Irgendwie wird es wohl gehen...

P@Tti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von eDonkey
eDonkey

Registriert seit: 8. Okt 2011
11 Beiträge
 
Delphi 7 Personal
 
#3

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 18. Dez 2011, 01:43
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?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 18. Dez 2011, 04:21
Mit WM_PRINT sollte das gehen. Allerdings hatte das afair den Haken, dass manche Controls nicht richtig gezeichnet werden oder sowas...
  Mit Zitat antworten Zitat
Benutzerbild von eDonkey
eDonkey

Registriert seit: 8. Okt 2011
11 Beiträge
 
Delphi 7 Personal
 
#5

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 18. Dez 2011, 07:21
Danke für die Antwort, ich habe das mal in die funktion eingebaut, die mit nicht versteckten fenstern bei mir super klappt:

Delphi-Quellcode:
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;
sieht nun so aus geht aber noch nicht, das TImage bleibt leer sofern das fenster versteckt ist.

PS: die dll wird bei mir statisch im OnCreate event der form geladen.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 18. Dez 2011, 08:21
die korrekte Implementierung findest Du dort:
http://www.delphipraxis.net/127741-s...anwendung.html

verdeckte oder außerhalb des Screen angezeigte Fenster (z.B. left -2000) bekommst Du so, versteckte im Sinne von hide nicht.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von eDonkey
eDonkey

Registriert seit: 8. Okt 2011
11 Beiträge
 
Delphi 7 Personal
 
#7

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 18. Dez 2011, 10:44
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 18. Dez 2011, 14:46
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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 18. Dez 2011, 16:10
Mal ein Hinweis dazu: TForm hat die Function GetFormImage, diese liefert ein Bitmap zurück, welches dann durch SaveToFile gespeichert werden kann.
Delphi-Quellcode:
...
var
  tmpBitmap: TBitmap;

  ...
  tmpBitmap:=myForm.GetFormImage;
  tmpBitMap.SaveToFile('test.bmp')
  ...
  tmpBitmap.Free;
In meinem Delphi 2007 klappt das auch mit nicht sichtbaren Forms.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von eDonkey
eDonkey

Registriert seit: 8. Okt 2011
11 Beiträge
 
Delphi 7 Personal
 
#10

AW: Hintergrundwindow (hidden) kopieren und als BMP speichern

  Alt 19. Dez 2011, 00:21
Mal ein Hinweis dazu: TForm hat die Function GetFormImage, diese liefert ein Bitmap zurück, welches dann durch SaveToFile...
...In meinem Delphi 2007 klappt das auch mit nicht sichtbaren Forms.
Es handelt sich bei dem Fenster um ein fremdes Fenster, keine eigene Form

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.
Genau so hab ich es momentan gelöst, mich stöhrt aber daran dass die programme immernoch in der taskleiste angezeigt werden. gibt es eine möglichkeit diese dort auszublenden?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 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