Windows Message Stack auslesen
-
Hi,
ich arbeite hier mit einem (sch..ß) RPA-Roboter (ist mir so vorgesetzt worden). Dieser kann viele Steuerelemente unseres SAP-Systems nicht erkennen und wir greifen dann über Koordinaten auf diese zu - das ist natürlich extrem prozessUNsicher. Also, wir sagen dem Roboter: "Klicke auf Koordinate x,y und schreibe dort einen Text rein."
Bewegt man die Maus oder ändert die Bildschirmauflösung... steigt der Roboter aus. Das gefällt mir nicht.
Ich hatte mir überlegt, ob ich vllt. nähere Informationen über diese Steuerelemente bekommen kann, indem ich den Windows Message Stack (oder wie ist der korrekte Name dafür) auslese.
Was haltet Ihr von der Überlegung und gibt es dafür schon fertige Codeschnippsel? Mit Windows.h bin ich nur rudimentär vertraut.
Grüße,
CJens
-
Komisch, C++ kommt in deinem Text gar nicht vor ...
-
Ich habe zwar noch nicht mit RPA Robotern gearbeitet, aber mit Testautmatisierungstools die ähnlich arbeiten.
Bei den Tastautomatisierungstools in oft eine Object Inspection dabei, mit denen man eindeutige Eigenschaften von Objekten identifizieren kann. Wenn man darüber die Objekte ansteuert geht auch nichts schief, wenn sich die Auflösung verändert.
Leider kann man dann nicht den klassischen Maus Capture nehmen und einfach abspielen, denn der arbeitet häufig mit absoluten Pixel Coordinaten, sondern man muss den Automatisierungscode selber schreibenWas das Mausbewegen anbegeht ist das nicht so einfach. Die Tools basieren ja darauf die GUI menschenähnlich zu verwenden. Prinzipiell ist das ganze mit dem Ansatz oben etwas robuster, aber bei intensiver Mausbewegung kann es trotzdem zu Problemen kommen (war zumindest bei den Test Tools so).
-
manni66 schrieb:
Komisch, C++ kommt in deinem Text gar nicht vor ...
Ich weiß, dass man in C/C++ mit <Windows.h> den Message Stack von Windows einsehen kann. Ich habe das mal in einem Buch über OpenGL gelesen, welches ich aber nicht mehr besitze.
Ansonsten habe ich natürlich auch kein Problem damit, das ganze mit Visual Basic oder C# zu erledigen, aber ich weiß eben, dass das über Windows.h irgendwie gehen muss.
Außerdem gehe ich davon aus, dass Leute die C++ (und damit recht hardwarenah) programmieren, mir eine solche Frage am besten beantworten können - und "Schlangenmensch" hat ja scheinbar schon verstanden, worum es geht.
-
Schlangenmensch schrieb:
Ich habe zwar noch nicht mit RPA Robotern gearbeitet, aber mit Testautmatisierungstools die ähnlich arbeiten.
Bei den Tastautomatisierungstools in oft eine Object Inspection dabei, mit denen man eindeutige Eigenschaften von Objekten identifizieren kann. Wenn man darüber die Objekte ansteuert geht auch nichts schief, wenn sich die Auflösung verändert.
Leider kann man dann nicht den klassischen Maus Capture nehmen und einfach abspielen, denn der arbeitet häufig mit absoluten Pixel Coordinaten, sondern man muss den Automatisierungscode selber schreibenWas das Mausbewegen anbegeht ist das nicht so einfach. Die Tools basieren ja darauf die GUI menschenähnlich zu verwenden. Prinzipiell ist das ganze mit dem Ansatz oben etwas robuster, aber bei intensiver Mausbewegung kann es trotzdem zu Problemen kommen (war zumindest bei den Test Tools so).
Danke, auch BluePrism hat diese Tastenerkennungstools. Aber bei SAP funktionieren die nicht, da gibt es so transparente Listen, die er nicht erkennt.
Das Auslesen des Windows Message Stacks war jetzt eine Idee von mir. Vielleicht ist das ja eine sehr blöde Idee, deshalb wollte ich hier auch mal fragen, wie ihr an so etwas ran gehen würdet.
-
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
und wir greifen dann über Koordinaten auf diese zu
...zu umständlich.
Fremde GUI manipulieren/fern steuern/auslesen lies dich hier ein:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd561918(v=vs.85).aspx
....auf CoDePrOjEcT.cOm findest Beispiel OpenSource Project in C#.