| |

VB.NET - FortgeschritteneScreenshot von fremden Fenster... | |  | Autor: Jiwolza | Datum: 12.01.10 23:46 |
| Abend allerseits.
Die kurze Version:
------------------
Kennt jemand noch eine Funktion ausser PrintWindow, mit der ich ein komplettes Bild eines Fensters von einem externen Programm bekomme, auch wenn dieses im Hintergrund läuft?
Die lange Version:
------------------
Mein Programm macht regelmäßig (häufiger als einmal pro Sekunde) ein Bild von einem Fenster eines externen Programmes, um darin einzelne Pixel auf ihre Farbe zu überprüfen und so Veränderungen zu erkennen.
Es soll später soweit gehen, dass ich mehrere Fenster gleichzeitig überwachen kann, mit mehreren Ausführungen meines Projekts.
Angefangen hab ich damit, einen Screenshot des Desktops zu machen, und daraus dann den Bereich meines Fensters auszuschneiden. Das war natürlich recht unsauber, und zweitens kam ich dann später drauf, dass es deutlich eleganter wäre, alle Fenster die ich überwachen will an einer Stelle des Desktops zu positionieren, was möglich wäre, wenn ich eine Funktion hätte, die auch verdeckt Fenster screenshotten kann. So fand ich PrintWindow, und sie tat auch wirklich, was ich von ihr wollte, nur leider steigerte sie die CPU-Belastung des externen Programms um das 5fache. Den Grund dafür fand ich hier
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/d9a188ae-3503-4c31-aa00-6e7195b5384a
und versuchte mich bis eben an BitBlt, und musste nun gerade feststellen, dass Fenster, welche verdeckt sind nicht erkannt werden...
Ich bin also wieder ganz am Anfang, und brauche euren Rat.
Wenn ich keine andere Funktion finde, sehe ich nur 3 Möglichkeiten:
1.: PrintWindow verwenden und das Screenshot-Interval solange verringern bis mein PC das mitmacht (Kein schöner Gedanke, weil die Qualität meines Programms sehr leidet, wenn es Veränderungen erst nach x Sekunden checkt und mir das mitteilen kann)
2.: Bei BitBlt bleiben und mein Programm auf maximal so vielen Fenstern anwenden, die auf meinen Desktop passen (Ich bekomme derzeit mit Mühe 4 Fenster hin, mein Ziel waren aber eigentlich so um die 12...)
3.: Jedes mal, wenn ich mir BitBlt ein Bild mache, das entsprechende Fenster in den Vordergrund holen (Was bei 12 Fenstern und ca. 2 Bildern pro Sekunde auch nicht wirklich klappen wird denk ich...)
Also, falls jemand eine Idee dazu hat, wäre ich sehr dankbar.
Auch mögliche Ideen, wie ich mit den gegebenen Umständen mein Ziel erreichen kann, sind mir gerne willkommen.
Hoffe ich hab mich verständlich ausgedrückt, antworte gern auf Nachfragen, und ich zähl auf euch
Jiwolza |  |
 Screenshot von fremden Fenster... | 1.661 | Jiwolza | 12.01.10 23:46 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevZIP40 Pro DLL 
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|