VBS Script funktioniert nicht?

3 Antworten

Hab das mal nachvollzogen, allerdings nicht mit dem ScriptingHost, sondern als Excel-Makro, das hatte ich grad offen und muss es auch nicht freigeben (WSH halte ich gerne gesperrt, aus Sicherheitsgründen)

Set oWsh = CreateObject("WScript.Shell")
oWsh.Run("notepad.exe")
oWsh.SendKeys ("t")
oWsh.SendKeys ("{ENTER}")

Bei mir läuft das Script schon weiter, während Notepad geöffnet wird, und Notepad empfängt das Signal gar nicht mehr.

Mit einem kleinen Delay (1/2 Sekunde) geht es dann:

'Am besten außerhalb der Subs
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'in der Sub
Set oWsh = CreateObject("WScript.Shell")
oWsh.Run("notepad.exe")
Sleep 500
oWsh.SendKeys ("t")
oWsh.SendKeys ("{ENTER}")

Allerdings kann ich jetzt nicht sagen, wie man in VBScript so ein Delay hinkriegt - notfalls mit einer Schleife. Eine Quick'n'Dirty-Lösung wäre so was wie

    EndeZeit = Timer() + 0.5
Do While Timer() < EndeZeit
Loop

Nachteile: - lastet einen CPU-Kern zu 100% aus; - funktioniert nicht, wenn kurz vor Mitternacht aufgerufen

-----

Vermutlich ist ein Tool, das sich auf so was mehr spezialisiert hat, geeigneter, wie z. B. AutoHotkey

Seliba  18.09.2017, 20:49

Delay macht man mit WScript.Sleep(ms), ms ist durch die Zeit in Millisekunden zu ersetzen ;)

1

Probiere mal, ein

WScript.Sleep(5000)

vor die Tastatureingabe zu machen ;)

Wie bereits gesagt startet das Programm ja nicht sofort, 5000 Millisekunden (5 Sekunden) Verzögerung reichen auf jeden Fall, du kannst aber natürlich auch weniger oder mehr Millisekunden "schlafen" lassen ;)

Die runden Klammern weglassen, dann sollte es klappen

Schau mal hier im Example

https://social.technet.microsoft.com/wiki/contents/articles/5169.vbscript-sendkeys-method.aspx

Aspire95 
Fragesteller
 18.09.2017, 19:49

Nein, die Runden Klammern müssen bleiben sonst funktioniert das gar nicht und ich erhalte dann Fehlermeldungen.

Ich habe das Programm zum testen mal mit Notepad.exe ausprobiert, dabei macht es dann genau diese schritte nur mit der Farbkalibrierung nicht...

0
Aspire95 
Fragesteller
 18.09.2017, 19:54

Set oWsh = CreateObject("WScript.Shell")

oWsh.Run("dccw")
oWsh.SendKeys "{ENTER}"
oWsh.SendKeys "{ESC}"

Habe es jetzt so angepasst, trotzdem geht es nicht..

0
ETechnikerfx  18.09.2017, 21:45
@Aspire95

Ich habe das Problem bei mir am Rechner einmal nachvollzogen. So wie ich das sehe ist der Window Focus nicht auf dem Formular für das DCCW. Allerdings konnte ich auch nicht mittels AppActivate den Focus auf das Window erzwingen. 

Ohne Klammern funktioniert es bei mir übrigens im Notepad ohne Probleme, wobei die Antwort von PWolff mit berücksichtigt werden muss, da hier ein Delay berücksichtigt werden muss.

0