Hallo meine Lieben, wir haben uns zum neuen Jahr einen Dia Magazinscanner mitsamt der Profisoftware Silverfast AiStudio 8.8 gekauft Da wir sehr sehr viel zum Scannen haben und der Scanner in einem anderen Stockwerk steht, möchte ich gerne den Fortschritt auslesen, der Heimautomatisierung zur Verfügung stellen und auf einer getrennten Anzeige darstellen. Ich hab mich damit (und auch mit der Idee Stillstandszeit zu sparen, durch ein Pipelining bei Scannen und Nachbearbeitung) im Herstellerforum der Software gemeldet und trotz meiner Investition von 360€ werden meine Anregungen wohl ignoriert bleiben - Beitrag siehe unten: http://forum.silverfast.com/viewtopic.php?f=1&t=15606&p=44519#p44519 Ich würde daher gerne ohne Beteiligung des Herstellers die im Anhang markierten Variablen aus der Programmoberfläche auslesen. Mit autoIt war es doch schon früher möglich Buttons in Programmen anhand ihrer id zu betätigen. Gibt es etwas vergleichbares zum Auslesen von Strings / VAriablen aus Programmoberflächen? Meine Google Suchen zu dem Thema verlaufen leider nur ins leere Viele Grüße und schonmal mit bestem Dank für eure Ideen, Markus
Markus H. schrieb: > Gibt es etwas vergleichbares zum Auslesen von Strings / VAriablen aus > Programmoberflächen? Das funktioniert nur, wenn die Programmoberfläche die windowseigenen Controls verwendet (die wie andere Windows-Elemente auch Fenster sind, denen man Nachrichten senden kann). Bei vielen Programmen gibt es seit geraumer Zeit die Unsitte, auf die Windows-GUI-Elemente zu verzichten und die komplette Oberfläche als Bitmap zu rendern. Damit ist der Zugriff auf einzelne Bedienelemente effektiv abgeklemmt. Ob Silverfast nun Windows-Controls verwendet oder was selbstgestricktes, kann mit einem Programm wie Spy++ herausgefunden werden. Das ist ein Tool, das zum Windows-SDK dazugehört, und das die Fensterhierarchie von Programmen anzeigt, sowie die Möglichkeit bietet, die an/von Fenster(n) gesendeten Nachrichten zu betrachten. Geht man mit dem Fadenkreuz-Werkzeug von Spy++ über die Programmoberfläche von Silverfast, und werden dann verschiedene Elemente hervorgehoben, hat man Glück und das Programm verwendet Windows-Controls. Wird immer nur das komplette Programmfenster hervorgehoben, sieht's schlecht aus. Dann hilft nur noch die Kombination aus "Screen-Grabbing" und einer (einfachen) Texterkennung.
Rufus Τ. F. schrieb: > Das funktioniert nur, wenn die Programmoberfläche die windowseigenen > Controls verwendet (die wie andere Windows-Elemente auch Fenster sind, > denen man Nachrichten senden kann). Auch bei den meißten anderen selbstgestrickten Bedienelementen kann man sich über den API-Befehl GetWindowText den Textinhalt holen. Mann kann dann nur den Zeiger holen und in Windowseigene Klassen "stopfen" Auf diese Weise habe ich ein mit Delphy erstelltes Programm mit einem unter C++ MFC um diverse Funktionen erweitert. (Autoausfüllen, Automatisches Tasten drücken,...) Rufus Τ. F. schrieb: > Bei vielen Programmen gibt es seit geraumer Zeit die Unsitte, auf die > Windows-GUI-Elemente zu verzichten und die komplette Oberfläche als > Bitmap zu rendern. Damit ist der Zugriff auf einzelne Bedienelemente > effektiv abgeklemmt. Und diese Unsitte wird in den Programmierschulen als "Die Zukunft" angepriesen und das Programmieren mit Controls wird dort als Unsitte bezeichnet.
>Mann kann dann nur den Zeiger holen und in Windowseigene Klassen >"stopfen" Das sollte "keinen Zeiger holen" heißen.
HA, Es handelt sich anscheinend um eine QT5 Anwendung. Habe dazu das Programm GammaRay gebunden, das es aber leider nur für UNIX und Linux gibt
Fertige Programme wird es da nicht geben für das, was du brauchst. Schau einmal ob du mit GetWindowText den Text der einzelnen Elemente ermitteln kannst. Falls du in C / C++ programmieren kannst, Kannst du die einzelnen Elemente mit GetWindow ermitteln. (Erst das Hauptfenster mit FindWindow suchen und dann sich mit GetWindow(GW_CHILD) und GetWindow(GW_HWNDNEXT) bis zum gewünschten Element durchhangeln)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.