Hey Leute!
Ich habe folgendes Problem: Ich muss ein Programm schreiben, das unter anderem ein anderes Programm startet und diesem dann Tastatureingaben sendet.
Also das sieht ungefähr so aus: Das Programm wird mit Shell() gestartet, dann erscheint zuerst ein kleines Login-Fenster. Über SendKeys() sende ich dem Fenster die Logindaten und dann schließt dieses Fenster und das eigentliche Programm öffnet sich. Auch diesem Programm muss ich wieder Tastatureingaben senden.
Das Problem dabei ist: Bis sich das eigentliche Programm öffnet, dauert es immer ein paar Sekunden. Ich habe jetzt deshalb in meinem Programm ein einfaches Sleep() eingebaut, nur das funktioniert eben ein paar Mal und ein paar Mal nicht (Wenn ich die Tastatureingaben zu früh sende, werden sie nicht angenommen). Deshalb habe ich es mit folgender Schleife probiert:
Ich habe gedacht das funktioniert, das tut es aber nicht. Anscheinend macht Windows mit dem anderen Prozess nicht weiter sondern durchläuft immer wieder diese Schleife.
Gibt es eine Möglichkeit Windows irgendwie zu sagen, es soll mit dem anderen Prozess weitermachen? Oder hat jemand eine andere Lösung wie man das möglichst stabil programmiert?
Lg
Ich habe folgendes Problem: Ich muss ein Programm schreiben, das unter anderem ein anderes Programm startet und diesem dann Tastatureingaben sendet.
Also das sieht ungefähr so aus: Das Programm wird mit Shell() gestartet, dann erscheint zuerst ein kleines Login-Fenster. Über SendKeys() sende ich dem Fenster die Logindaten und dann schließt dieses Fenster und das eigentliche Programm öffnet sich. Auch diesem Programm muss ich wieder Tastatureingaben senden.
Das Problem dabei ist: Bis sich das eigentliche Programm öffnet, dauert es immer ein paar Sekunden. Ich habe jetzt deshalb in meinem Programm ein einfaches Sleep() eingebaut, nur das funktioniert eben ein paar Mal und ein paar Mal nicht (Wenn ich die Tastatureingaben zu früh sende, werden sie nicht angenommen). Deshalb habe ich es mit folgender Schleife probiert:
Visual Basic:
While FindWindow(vbNullString, "Fenstertitel") = 0
Sleep (1000)
Wend
Ich habe gedacht das funktioniert, das tut es aber nicht. Anscheinend macht Windows mit dem anderen Prozess nicht weiter sondern durchläuft immer wieder diese Schleife.
Gibt es eine Möglichkeit Windows irgendwie zu sagen, es soll mit dem anderen Prozess weitermachen? Oder hat jemand eine andere Lösung wie man das möglichst stabil programmiert?
Lg