Folgendes Scenario:
Am PC läuft ein online Programm (Spiel). Ich muss darauf mit Mausklicken reagieren.
Ich möchte gleichzeitig ein Programm laufen lassen, welches regelmäßig, z.B. alle 0,1 sec, Teile des Fensterinhalts mit Mustern vergleicht, logische Schlüsse zieht und danach allenfalls mit Mausklicken reagiert oder im eigenen Fenster eine msg abgibt.
Welches Programm eignet sich dazu? Ich meine jetzt nicht die Logik, die mache ich mit Lisp oder Prolog oder sonstwas, sondern das Herausholen eines Flecks aus dem Bildschitm(-Puffer?) und das automatische Hineinklicken in den Bildschirm. Das eigentliche online-Programm (Spiel) möchte ich in keiner Weise verändern oder beeinflussen, mit Ausnahme der automatischen Mausklicks.
Hallo langlebenistgesund,
Am PC läuft ein online Programm (Spiel). Ich muss darauf mit
Mausklicken reagieren.
Ich möchte gleichzeitig ein Programm laufen lassen, welches
regelmäßig, z.B. alle 0,1 sec, Teile des Fensterinhalts mit
Mustern vergleicht, logische Schlüsse zieht und danach
allenfalls mit Mausklicken reagiert oder im eigenen Fenster
eine msg abgibt.
Welches Programm eignet sich dazu?
Das sind zwei Aufgabenstellungen. Zuerst musst Du ja eine Mustererkennung durchführen, um festzustellen, wo sich der Fleck im Fenster befindet. Ob so etwas in der von dir geforderten Geschwindigkeit möglich ist (aller 0,1 sec) weiss ich nicht, hängt ja auch von der Komplexität und der Bewegungsgeschwindigkeit des zu erkennenden Musters ab. Ich habe da auf jeden Fall meine Zweifel, aber Du kannst ja z.B. mit Halcon, bzw. dem darauf aufbauenden ActivVisionTools experimentieren.
http://www.mvtec.com/halcon/
http://www.activ-vision-tools.com/
beides kann man als Testversion ausprobieren, ob die endgültige Version dann im bezahlbaren Rahmen bleibt und überhaupt alle deine Anforderungen erfüllt, konnte ich nicht feststellen.
Der zweite Teil ist dann die Simulation der Mausklicks. Das ist der leichtere Part, der aber von der verwendeten Programmiersprache abhängt. Jede neuere Programmiersprache sollte so eine Bibliothek zur Verfügung stellen, da fördert googeln nach „mausklicks simulieren“ oder entsprechendem allerhand zu Tage. Eine Möglichkeit dafür wäre z.B. AutoIt
http://www.autoitscript.com/autoit3/index.shtml
da gibt es z.B. hier ein Beispiel, wie man so etwas bewerkstelligen kann:
http://www.netzwelt.de/news/73140_4-tutorial-automat…
Viele Grüße
Marvin
>>>>>>>>>> Danke für die ausführliche Antwort
Das sind zwei Aufgabenstellungen. Zuerst musst Du ja eine
Mustererkennung durchführen, aber Du kannst ja z.B.
mit Halcon, bzw. dem darauf aufbauenden ActivVisionTools
experimentieren.
>>>>>>>>>>>>> Damit bin ich ziemlich unglücklich. Ich wollte eigentlich nur wissen, wie ich auf Bildschirminhalte zugreifen kann. Die Mustererkennung mache ich dann selber. Wo im Speicher befindet sich das Bildschirmbild?
Der zweite Teil ist dann die Simulation der Mausklicks. Das
ist der leichtere Part, der aber von der verwendeten
Programmiersprache abhängt. Jede neuere Programmiersprache
sollte so eine Bibliothek zur Verfügung stellen, da fördert
googeln nach „mausklicks simulieren“ oder entsprechendem
allerhand zu Tage.
>>>>>>> das klappt.
Danke Reinhard
Hallo Reinhard,
Ich wollte eigentlich nur wissen,
wie ich auf Bildschirminhalte zugreifen kann.
Wo im Speicher befindet
sich das Bildschirmbild?
Das läuft nicht mehr über direkte Speicheradressen, jedenfalls nicht, daß ich wüsste. Der Zugriff auf Bildschirminhalte (Auslesen der Pixel) geschieht über eine Windows GDI, das .NET Framework liefert z.B. die GetPixel-Methode
http://msdn.microsoft.com/de-de/library/system.drawi…
Ob es da auch eine Schnittstelle für Lisp gibt weiss ich nicht.
Viele Grüße
Marvin
Einmal noch eine doofe Frage:
Scheint mir das nur so oder stimmt es: Die getPixel Methode ist nicht für WindowsVista geeignet!
Das entnehme ich dem letzten Teil dieser Seite:
http://msdn.microsoft.com/de-de/library/system.drawi…
Wenns wirklich wahr ist, was sollen Vistaner tun? Zurück zu XP ???
Hallo Reinhard,
Einmal noch eine doofe Frage:
Ich finde die Frage gar nicht doof.
Scheint mir das nur so oder stimmt es: Die getPixel Methode
ist nicht für WindowsVista geeignet!
aber das getPixel nicht für Vista geeignet ist, kann ich so nicht sehen. Unter Plattformen wird als erstes Windows Vista genannt und unter dem Link
Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
finden sich dann die Punkte:
-
Windows Vista Starter
-
Windows Vista Home Basic
-
Windows Vista Home Premium
-
Windows Vista Ultimate
-
Windows Vista Business
Ich benutze kein Vista, kann es also nicht praktisch überprüfen, aber es würde mich doch sehr wundern, wenn diese Aussagen von Microsoft falsch wären.
Viele Grüße
Marvin