Hallo Leute
Ich Komme mit einem Thema, welches ich in den letzten 3-Monaten zu tausenden ergoogelt habe und viele Lösungen
haben so wie beschrieben funktioniert.
Auch mindestens 4 Musterprogramme, mit fertigem oder teilweise Code, konnte ich erfolgreich testen.
Nur haben die ganzen 3-Monate und viele Nächte nicht zur Lösung meiner Anforderung geführt.
Ich habe verschiedene Aufgaben zu erledigen, dabei muss ich Werte aus Testprogrammen oder Werte aus Maschinensteuerungen
ablesen und auf einem Papierformular eintragen. Lesefehler, Schreibfehler und insgesamt ein langweiliger Job eben...
Das möchte ich gerne automatisiert ablesen, insbesondere Messwerte die ich in einem Bereich von-bis überprüfen muss sind mühsam,
da wäre es toll, den Messwert automatisch ablesen und prüfen zu können, da würde meinen Augen sehr gefallen.
"Einfach" ein zusätzliches Programm starten, welches die Anzeige ausliest und mir mit einem grünen Haken anzeigt
ob alles OK ist oder eben nicht.
Alles Windows7 oder selten mal auch Windows10.
Zur Programmierung steht mit nur VB6 zur Verfügung.
Nun grüble ich, wie oben erwähnt, mindestens seit 3 Monaten daran rum und hab gefühlte 1000 Beiträge gelesen.
Daraus lassen sich für Eure freundliche Hilfe, bereits einige Vermutungen ausschliessen:
1. Die Programme haben keine API-Schnittstelle
2. Ich weiss nicht womit die Fremdprogramme entwickelt und compiliert wurden
3. Die meisten Beispiele die ich in VB zum laufen gebracht habe, konnten einwandfrei Textfelder, Buttons, Listen u.s.w. auslesen,
von selbstgeschriebenen VB6 Programmen.
4. Ich bekomme problemlos das Handle aller Fremdprogramme und damit z.B: den Fenstertitel
5. Ich bekomme problemlos das Child-Handle von Buttons oder Textfeldern meines VB-Programmes und damit deren Name und Werte.
6. Ich habe Winspy zuhilfe genommen, finde dort aber kaum brauchbare Informationen
7. inspect.exe tut dasselbe und zeigt mir das was ich suche viel besser an.
8. Ich habe gelesen und erkannt, dass es problematisch ist, wenn z.B: Textfelder einfach alle die Klasse "TextBox" haben
so dass man diese dann halt alle durchsuchen muss um sich dann zu merken dass es das 3. Textfeld ist, deren Wert man benötigt.
Irgendwie sollte man mit FindWindowEx aber auch den Namen / Titel eines Textfeldes erhaschen können, ist mir aber noch nicht gelungen
9. Ich bin gefühlt auf der Suche nach einem "foreach" oder was in der Art, mit dem ich alle Elemente eines Fenster durchsuchen könnte.
Dabei mach es auch keine Probleme wenn es mehrere "TextBox" Objekte gibt und falls diese die gleichen Namen haben u.s.w.
Ich kann aufgrund der Werte in den Textboxen dann erkennen die "wievielte" es wäre und mein Programm daran ausrichten.
Alles was ich in den letzten 3-Monaten als Beispiele oder Vorschläge und Codefragmente als "suchender" ohne in einem Forum explizit nachzufragen
erhalten habe, hat grundsätzlich so funktioniert wie vorgeschlagen.
Das besagte Programm aber, welches mir die Werte von einem angeschlossenen Gerät anzeigt, bringt mit FindWindow und FindWindowEx
leider keine Textfelder u.s.w. zutage.
Ich kann mi inspect.exe aber die Felder anschauen und konnte sogar mal mit inspect.exe einen Wert in diesem Fremdprogramm ändern.
Es ist also Möglich die Werte auszulesen und zu ändern...
Nur will mir das mit VB6 einfach nicht gelingen, auch wenn ich versuche mit den Classnamen diese Objekte zu finden.
Hat hier jemand dazu eine Idee?
Am liebsten wäre natürlich wenn ich einfach das HAndel des FEnsters habe und mit foreach (oder ähnlich)
alle Objekte im Fenster auflisten könnte.
Vielen Dank im Voraus Erwin
Ich Komme mit einem Thema, welches ich in den letzten 3-Monaten zu tausenden ergoogelt habe und viele Lösungen
haben so wie beschrieben funktioniert.
Auch mindestens 4 Musterprogramme, mit fertigem oder teilweise Code, konnte ich erfolgreich testen.
Nur haben die ganzen 3-Monate und viele Nächte nicht zur Lösung meiner Anforderung geführt.
Ich habe verschiedene Aufgaben zu erledigen, dabei muss ich Werte aus Testprogrammen oder Werte aus Maschinensteuerungen
ablesen und auf einem Papierformular eintragen. Lesefehler, Schreibfehler und insgesamt ein langweiliger Job eben...
Das möchte ich gerne automatisiert ablesen, insbesondere Messwerte die ich in einem Bereich von-bis überprüfen muss sind mühsam,
da wäre es toll, den Messwert automatisch ablesen und prüfen zu können, da würde meinen Augen sehr gefallen.
"Einfach" ein zusätzliches Programm starten, welches die Anzeige ausliest und mir mit einem grünen Haken anzeigt
ob alles OK ist oder eben nicht.
Alles Windows7 oder selten mal auch Windows10.
Zur Programmierung steht mit nur VB6 zur Verfügung.
Nun grüble ich, wie oben erwähnt, mindestens seit 3 Monaten daran rum und hab gefühlte 1000 Beiträge gelesen.
Daraus lassen sich für Eure freundliche Hilfe, bereits einige Vermutungen ausschliessen:
1. Die Programme haben keine API-Schnittstelle
2. Ich weiss nicht womit die Fremdprogramme entwickelt und compiliert wurden
3. Die meisten Beispiele die ich in VB zum laufen gebracht habe, konnten einwandfrei Textfelder, Buttons, Listen u.s.w. auslesen,
von selbstgeschriebenen VB6 Programmen.
4. Ich bekomme problemlos das Handle aller Fremdprogramme und damit z.B: den Fenstertitel
5. Ich bekomme problemlos das Child-Handle von Buttons oder Textfeldern meines VB-Programmes und damit deren Name und Werte.
6. Ich habe Winspy zuhilfe genommen, finde dort aber kaum brauchbare Informationen
7. inspect.exe tut dasselbe und zeigt mir das was ich suche viel besser an.
8. Ich habe gelesen und erkannt, dass es problematisch ist, wenn z.B: Textfelder einfach alle die Klasse "TextBox" haben
so dass man diese dann halt alle durchsuchen muss um sich dann zu merken dass es das 3. Textfeld ist, deren Wert man benötigt.
Irgendwie sollte man mit FindWindowEx aber auch den Namen / Titel eines Textfeldes erhaschen können, ist mir aber noch nicht gelungen
9. Ich bin gefühlt auf der Suche nach einem "foreach" oder was in der Art, mit dem ich alle Elemente eines Fenster durchsuchen könnte.
Dabei mach es auch keine Probleme wenn es mehrere "TextBox" Objekte gibt und falls diese die gleichen Namen haben u.s.w.
Ich kann aufgrund der Werte in den Textboxen dann erkennen die "wievielte" es wäre und mein Programm daran ausrichten.
Alles was ich in den letzten 3-Monaten als Beispiele oder Vorschläge und Codefragmente als "suchender" ohne in einem Forum explizit nachzufragen
erhalten habe, hat grundsätzlich so funktioniert wie vorgeschlagen.
Das besagte Programm aber, welches mir die Werte von einem angeschlossenen Gerät anzeigt, bringt mit FindWindow und FindWindowEx
leider keine Textfelder u.s.w. zutage.
Ich kann mi inspect.exe aber die Felder anschauen und konnte sogar mal mit inspect.exe einen Wert in diesem Fremdprogramm ändern.
Es ist also Möglich die Werte auszulesen und zu ändern...
Nur will mir das mit VB6 einfach nicht gelingen, auch wenn ich versuche mit den Classnamen diese Objekte zu finden.
Hat hier jemand dazu eine Idee?
Am liebsten wäre natürlich wenn ich einfach das HAndel des FEnsters habe und mit foreach (oder ähnlich)
alle Objekte im Fenster auflisten könnte.
Vielen Dank im Voraus Erwin