Seite 1 von 1

Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Donnerstag 9. April 2015, 12:19
von Judge
Hallo zusammen!

Ich wüsste gerne ob es mit Python möglich ist, den Bildschirminhalt (unter Windows) zu analysieren; z.B. ob in einem bestimmten Bereich eine Veränderung auftritt, dort ein bestimmter Text steht, oder ähnliches.
Ebenso würde ich gerne Maus- und Tastatureingaben veranlassen.

Die Frage ist, ob das mit Python überhaupt geht, oder ob sowas "systemnahen", kompilierbaren Sprachen wie C oder ähnlichem vorbehalten ist.

Hintergrund ist, das wir noch eine handvoll Windows Spezialprogramme haben, bei denen es cool wäre, wenn bei bestimmten Events eine Software bestimmte Aktionen ausführen würde. Ein Beispiel ist die Kontrollsoftware zu unserer Schließanlage: Es wäre extrem cool, wenn man für bestimmte Bereiche eine SMS versenden könnte und das Programm "drückt" in der Software durch eine Kombination von Mausklicks daraufhin bestimmte Türen remote auf; z.B. das Garagentor.

Angenommen, das geht: Kann ggf. sogar jemand mit einem Modul-/Projektnamen aufwarten? Ich gehe mal nicht davon aus, das sowas mit zwei-drei Zeilen Python Bordmitteln funktioniert, oder?

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Donnerstag 9. April 2015, 12:26
von BlackJack
@Judge: So direkt mit Bordmitteln nicht aber es gibt Module für so etwas. pywinauto fällt mir da so spontan ein.

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Donnerstag 9. April 2015, 12:29
von Hyperion
Für Windows solltest ihr euch mal Ranorex angucken! Das ist zwar primär für automatisierte Tests gedacht, kann man aber auch prima für das Automatisieren von Aktionen nutzen, die regelmäßig ablaufen sollen :-)

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Donnerstag 9. April 2015, 12:59
von Judge
BlackJack hat geschrieben:@Judge: So direkt mit Bordmitteln nicht aber es gibt Module für so etwas. pywinauto fällt mir da so spontan ein.
Das sieht doch für das Steuern der Eingaben schonmal klasse aus. Ich hatte an so etwas gedacht, das man durch die BS-Erkennung den anzuklickenden Bereich identifiziert und anschließend "in diese Koordinate" klickt, aber das sieht mindestens genauso gut aus, wenn nicht besser :)
Danke dafür schonmal!
Hyperion hat geschrieben:Für Windows solltest ihr euch mal Ranorex angucken!
Da steht nur was von einer C# und VB.NET API - was bringt das für Python?

Soviel schonmal (in Rekordzeit - WOW :) ) zur Eingabensteuerung ... wie sieht es mit dem "ablesen" des Bildschirminhaltes aus? Gibt es da auch Möglichkeiten / Tipps?

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Donnerstag 9. April 2015, 13:07
von BlackJack
@Judge: Was willst Du denn ablesen? Irgendetwas was man mit `pywinauto` nicht ansprechen kann? Man kann damit ja nicht nur Eingaben tätigen.

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Donnerstag 9. April 2015, 13:45
von Hyperion
Judge hat geschrieben: Da steht nur was von einer C# und VB.NET API - was bringt das für Python?
Na, IronPython existiert ;-) Und zur Not musst Du das eben mit etwas anderem als Python coden - aber bei Ranorex muss man auch eher selten Code schreiben für einfache Dinge. Das meiste geht wirklich komfortabel über GUI!
Judge hat geschrieben: Soviel schonmal (in Rekordzeit - WOW :) ) zur Eingabensteuerung ... wie sieht es mit dem "ablesen" des Bildschirminhaltes aus? Gibt es da auch Möglichkeiten / Tipps?
Auch das geht natürlich mit Ranorex! Da gibts iirc auch ein Video-Tutorial... das solltest Du Dir vielleicht mal angucken, um einen Eindruck zu bekommen.

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Freitag 10. April 2015, 08:27
von Rainier
Mir würde http://www.sikuli.org/ einfallen

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Sonntag 12. April 2015, 18:10
von Judge
BlackJack hat geschrieben:@Judge: Was willst Du denn ablesen? Irgendetwas was man mit `pywinauto` nicht ansprechen kann? Man kann damit ja nicht nur Eingaben tätigen.
Naja, so tief bin ich jetzt in pywinauto noch nicht eingetaucht; bin auch noch Python Anfänger und werde da wohl erst mal ein wenig "forschen" müssen, was alles geht.
Für eine zweite Programmier-Idee fiel mir aber etwas in Verbindung mit einem Kamera-Bild ein: Wenn sich in einem bestimmten Bereich in dem von der Kamera gelieferten Bild etwas verändert/bewegt, dann ... .

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Mittwoch 15. April 2015, 20:16
von Dami123
Anstatt Funktionen zum Auslesen des Inhalts zu schreiben, würde es sich, zumindest vom Aufwand her, eher empfehlen bestimmte Bildschirmkoordinaten direkt anzusprechen.
Man speichert die Koordinaten, die angeklickt werden sollen, bei einer bestimmten Auflösung des Softwarefensters.
So könntest du:
- überprüfen ob Programm läuft / starten / Fenstergröße festlegen
- in dict gespeicherte Koordinaten ansprechen

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Samstag 18. April 2015, 10:10
von Judge
Dami123 hat geschrieben:Anstatt Funktionen zum Auslesen des Inhalts zu schreiben, würde es sich, zumindest vom Aufwand her, eher empfehlen bestimmte Bildschirmkoordinaten direkt anzusprechen.
Man speichert die Koordinaten, die angeklickt werden sollen, bei einer bestimmten Auflösung des Softwarefensters.
So könntest du:
- überprüfen ob Programm läuft / starten / Fenstergröße festlegen
- in dict gespeicherte Koordinaten ansprechen
Hört sich gut an und sollte auch da klappen, wo pywinauto ggf. wegen gar schlimmer Fensterdesigns nicht weiter kommt ... wie lasse ich bestimmte Koordinaten anklicken?

Re: Bildschirminhalt erkennen und Maus/Tastaturbew. steuern?

Verfasst: Freitag 5. Juni 2015, 16:25
von Nikolaij
Ich würde mir mal pymouse anschauen da kann man genz einfach verschiedene Maus-Aktionen durchführen.