VisualBasic mit VB auf offenes Fenster zugreifen und Enter Eingabe simulieren

Reinhard77

Lieutenant
Registriert
Feb. 2019
Beiträge
997
ich will mit Powershell ein Programm installieren. Das klappt so weit auch ganz gut. Nun besteht das Problem, dass dieses Programm bei der Installation ein Fenster öffnet, wo drei Auswahlmöglichkeiten vorhanden sind. Mit einem VB Skript soll dann mit zweimal Tab und dem Sendkey "Enter" die Installation fortgesetzt werden, was leider nicht so funktioniert wie ich will und ich weiß nicht wieso.

Da muss dann, soweit ich das gesehen habe, der Name des Fensters im VB-Skript angegeben werden, was auch gemacht wurde. Nur funktioniert es nicht und die Sendkey Befehle erreichen nicht ihr Ziel, das offene Fenster. Ich sehe den Fehler leider nicht. Den Code kann ich hier momentan nicht posten.

Woran kann's liegen?
 
Schau im die installation datei selbst - name.exe /? Oder für msi wäre es /qn für silent install (/? Für help)

Thema ist silent installation

Musste da auch schon confs mitgeben aber /? Wird dir mehr sagen
 
Ja nicht zu viele Infos geben, nachher kann man sogar helfen ;)
VB ist für so eine Aufgabenstellung grundsätzlich eher 2te Wahl, versuche es vielleicht mal mit Autohotkey o.ä.
Stichwort dürfte bei VB Filesystemobject und deren handles sein ...
 
Kenny [CH] schrieb:
Schau im die installation datei selbst - name.exe /? Oder für msi wäre es /qn für silent install (/? Für help)

Thema ist silent installation

Der Parameter /qn ist schon drin, hilft aber nicht, da der Installer einen Fehler wirft, der ignoriert werden soll. Die Installation kann dann mit dem Button "ignorieren" weiter geführt werden.
 
Reinhard77 schrieb:
der Installer einen Fehler wirft, der ignoriert werden soll
Was für einen fehler? Kann der nicht anderst gelöst werden? (Service beenden/dependecy installieren etc pp?)
Fehler zu ignorieren klingt nicht gut (in den meisten fällen...) Daher die frage und das wäre wichtig gewesen im start post.
 
Demon_666 schrieb:
VB ist für so eine Aufgabenstellung grundsätzlich eher 2te Wahl, versuche es vielleicht mal mit Autohotkey o.ä.
Stichwort dürfte bei VB Filesystemobject und deren handles sein ...
Ich denke Autohotkey kommt nicht infrage, da damit der Code davon nur in kompilierter Form genutzt werden kann und dann wäre VB die bessere Wahl, wie ich finde. Dann ist der Code einfacher anzupassen, ohne erst etwas kompilieren zu müssen, mit einer weiteren Software.
Ergänzung ()

Kenny [CH] schrieb:
Was für einen fehler?

Kann ich dir nicht sagen. Ich habe die Software nicht programmiert.

Kenny [CH] schrieb:
Kann der nicht anderst gelöst werden?

Ich weiß das nicht genau. Momentan ist es halt so.
 
Zuletzt bearbeitet:
Reinhard77 schrieb:
Kann ich dir nicht sagen. Ich habe die Software nicht programmiert
Naja wenn du nicht mal die meldung print screenen kanst die du weg klicken möchtest, wie sollen wir helfen? Geh zum sw erzeuger melde dein problem da - die werden mit den install logs (sofern vorhanden) das problem lösen. Manuell installieren taucht der fehler auch auf (also nicht nur im silent install?)
 
Kenny [CH] schrieb:
Naja wenn du nicht mal die meldung print screenen kanst

Natürlich kann ich das.

Kenny [CH] schrieb:
Geh zum sw erzeuger melde dein problem da - die werden mit den install logs (sofern vorhanden) das problem lösen.

Ich habe die Anweisung bekommen den Fehler zu ignorieren und habe es nicht weiter hinterfragt. Wieso der Fehler nicht behoben wird, kann ich dir auch nicht sagen. Muss wohl offensichtlich nicht relevant sein bzw. kein besonderes Problem darstellen. Wie gesagt: momentan ist es halt so.

Kenny [CH] schrieb:
Manuell installieren taucht der fehler auch auf (also nicht nur im silent install?)

Ja genau.
 
Zuletzt bearbeitet:
Reinhard77 schrieb:
Nur funktioniert es nicht und die Sendkey Befehle erreichen nicht ihr Ziel, das offene Fenster. Ich sehe den Fehler leider nicht. Den Code kann ich hier momentan nicht posten.

Woran kann's liegen?
Evtl. fehlt noch der Fokus auf dem Control, an das sendkey senden soll. Zum testen von sendkey bietet sich notepad an, weil dort der fokus sofort im text bereich liegt und die gesendeten Zeichen dort zu sehen sind.
 
Micke schrieb:
Evtl. fehlt noch der Fokus auf dem Control, an das sendkey senden soll.

Also den Fokus setzt man doch mit .AppActivate ("Fenstertitel") wenn ich das richtig sehe?! Und das wird im VB Script auch so gemacht:

Code:
WshShell.AppActivate "Fenstertitel"

Micke schrieb:
Zum testen von sendkey bietet sich notepad an, weil dort der fokus sofort im text bereich liegt und die gesendeten Zeichen dort zu sehen sind.

Also ich habe das Script mit dem Editor getestet und an den Notepad Editor werden die Keys korrekt gesendet.

Ich habe mir das Ganze noch mal genauer angesehen und im Prinzip ist es so, dass wenn ich die eine der drei Optionen "Abbrechen" klicke, erst dann springt das Powershell Skript in das VB Skript und schreibt die Sendkeys in den Notepad Editor.

Offensichtlich wird der VB Code erst ausgeführt, wenn ich auf abbrechen klicke und der Focus wird mit .AppActivate nicht auf dieses Fenster gesetzt.

Also bei der Meldung gibt es die Optionen "Abbrechen", "Wiederholen" und "Ignorieren".

Die Fehlermeldung lautet:

Fehler bei der Registrierung des Moduls C:\Programmpfad\DllName.dll HRESULT -.... Wenden Sie sich an den Support

Der Fehler hängt damit zusammen, dass der Installer einen Registry Key sucht, den es nicht gibt, da diese Software für ältere Systeme entwickelt wurde und nicht mehr weiterentwickelt wird.
 
Zuletzt bearbeitet:
Zurück
Oben