AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Screenshots einzelner Fenster

Ein Thema von Motzi · begonnen am 21. Nov 2007 · letzter Beitrag vom 21. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#1

Screenshots einzelner Fenster

  Alt 21. Nov 2007, 02:44
Hallo,

ich muss Screenshots einiger Fenster von bestimmten Prozessen machen - ansich kein Problem, ABER: die Fenster können minimiert oder irgendwo im Hintergrund (durch andere Fenster verdeckt) sein. Ich kann sie natürlich "restoren" und in den Vordergrund holen, jedoch handelt es sich dabei um sehr komplexe Applikationen die unter Umständen recht lange brauchen, bis der Fensterinhalt wieder vollständig neu gezeichnet ist. Wenn ich den Screenshot zu früh mache kommt als nur Mist dabei raus.

Daher meine Frage - gibt es irgendwelche APIs/Messages die ein Fenster dazu veranlassen sich neu zu zeichnen und erst zurückkehren, wenn das Fenster damit fertig ist? Ich hab bis jetzt leider nichts gefunden....

LG, Manuel
Manuel Pöter
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 06:35
Brauchst du einen Scrennshoot oder willst du nur das Fenster ausdrucken?
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 07:22
Hallo,

du kannst das per InvalidateRect oder SendMessage (WM_PAINT) machen,
aber Windows ist so intelligent, dass es keine versteckten Fenster
zum Neuzeichnen veranlasst.
Ausserdem würde ich das als Programmierer der App ebenfalls
abfragen, warum Neuzeichnen, wenn ich versteckt bin ?

Drittes Problem. WM_PAINT ist Nachricht mit niedriger Priorität.

Meine Lösung deshalb: Vergess das ganze.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 07:43
Zitat von hoika:
Ausserdem würde ich das als Programmierer der App ebenfalls
abfragen, warum Neuzeichnen, wenn ich versteckt bin ?
Hallo,

man könnte dann noch versuchen mit windows.SetForegroundWindow() das Fenster nach vorne zu holen und dann in einer Schleife solange darauf warten.while windows.GetForegroundWindow <> ... do
Zitat von Motzi:
Daher meine Frage - gibt es irgendwelche APIs/Messages die ein Fenster dazu veranlassen sich neu zu zeichnen und erst zurückkehren, wenn das Fenster damit fertig ist? Ich hab bis jetzt leider nichts gefunden....
Hast du es schon mal mit windows.RedrawWindow() versucht und Result ausgewertet?
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 11:00
Hallo, erstmal danke für die Antworten!

@mkinzler: ich brauch einfach den Inhalt des Fensters - es muss nicht unbedingt ein Screenshot sein, aber was gibt es für Alternativen? WM_PRINT/WM_PRINTCLIENT sind AFAIK keine wirklichen Alternativen, da die jeweilige Anwendung diese Nachrichten explizit unterstützen muss - zumindest laut PSDK:
Zitat von PSDK:
To force a window to draw into a specific device context, use the WM_PRINT or WM_PRINTCLIENT message. Note that this requires the target window to support the WM_PRINTCLIENT message.
@hoika, bitsetter: ich hab schon diverses mit InvalidateRect, UpdateWindow und RedrawWindow versucht. Das Fenster wird zuvor mit ForceForegroundWindow in den Vordergrund geholt - GetForegroundWindow liefert auch das besagte Fenster zurück, es ist also bereits im Vordergrund, aber noch nicht komplett neu gezeichnet. Eine WM_PAINT Message per SendMessage zu verschicken hab ich auch schon überlegt, das SDK schreibt jedoch:
Zitat von PSDK:
The WM_PAINT message is generated by the system and should not be sent by an application.
LG, Manuel
Manuel Pöter
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 11:11
Handelt es sich um ein Programm von dir?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 11:16
Nein, genau das ist das Problem.. es handelt sich um verschiedene Programme anderer Hersteller.
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 11:31
Zitat von Motzi:
@mkinzler: ich brauch einfach den Inhalt des Fensters - es muss nicht unbedingt ein Screenshot sein, aber was gibt es für Alternativen? WM_PRINT/WM_PRINTCLIENT sind AFAIK keine wirklichen Alternativen, da die jeweilige Anwendung diese Nachrichten explizit unterstützen muss - zumindest laut PSDK:
Hast dus schon versucht? Ich nehm fast an, dass die Standard-Windowcontrols das implementiert haben.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 11:38
Nein, versucht hab ich es noch nicht, werd ich aber vielleicht noch. Ich hab aber keine großen Hoffnungen, da die Anwendung große Netzpläne grafisch darstellt etc. und genau darum geht es - also nicht einfach nur um normale Standard-Steuerelemente.
Manuel Pöter
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Screenshots einzelner Fenster

  Alt 21. Nov 2007, 12:34
Und das Programm hat keine Druckfunktion?
Markus Kinzler
  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 21:44 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