Aus belibiger Programmoberfläche Variablen auslesen - Silverfast AI Studio 8.8

OP Persönliche Seite #5280644
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Persönliche Seite #5280674
Lesenswert?
• ▲
▼
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.
Gast #5280681
Lesenswert?
• ▲
▼
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.
Gast #5280728
Lesenswert?
• ▲
▼
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)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.