Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12423[/thread]

Pixelwerte vom Bildschirm auslesen

Leser: 2


<< >> 6 Einträge, 1 Seite
dominicn
 2008-08-30 14:48
#114120 #114120
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte ein Programm schreiben, das die grafischen Ausgaben eines anderen Programms überwacht. Gibt es also eine Möglichkeit, den Farbwert eines bestimmten Pixels auf dem Bildschirm - oder besser innerhalb eines bestimmten Fensters - auszulesen?

Ich freu mich auf eure Tipps.
GwenDragon
 2008-08-30 14:56
#114121 #114121
User since
2005-01-17
14747 Artikel
Admin1
[Homepage]
user image
LanX-
 2008-08-30 16:03
#114122 #114122
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
dominicn
 2008-08-30 16:46
#114123 #114123
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Sorry, hab ich vergessen zu erwähnen. Es sollte unter Windows XP laufen.

Danke, LanX-, für den Link. Das hat mir geholfen!
dominicn
 2008-08-30 18:10
#114132 #114132
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Soll ich lieber hier weiterschreiben oder im anderen Thread?

Jetzt habe ich gelesen, dass man statt "DISPLAY" auch ein Window-Objekt angeben kann. Allerdings weiß ich nicht, ob und wenn ja wie ich dort auf das Fenster eines externen Programms verweisen kann. Den Fenstertitel oder auch den Namen der .exe-Datei habe ich.
dominicn
 2008-08-30 18:34
#114136 #114136
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Okay, ich habe eine ganz passable Lösung gefunden:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use Win32::GUI();
use Win32::Capture;

my @WIN = FindWindowLike('hier kommt der fenstername rein'); # Find the HWND to be captured.

if ($#WIN < 0) {
    print "Not found";
} else {
    foreach(@WIN) {
        my $image = CaptureWindowRect($_, 2, 0, 0, 400, 300);
        $image->SaveToFile("screenshot.png");
    }
}


Leider holt der Aufruf dieses Perlprogramms das gefundene Fenster in den Vordergrund und wenn man kurz darauf wieder ein anderes Fenster davorholt, dann kann es passieren, dass der Ausschnitt dieses Fensters aufgenommen wird.
<< >> 6 Einträge, 1 Seite



View all threads created 2008-08-30 14:48.