Hallo,
ich kann mir vorstellen, dass die Execute-Methode des Windows Scripting Host hier helfen kann.
wieso sollte mir die Execute-Methode hier helfen? Kannst Du mir Deine "Vorstellung" etwas näher bringen?
weil sie es ermöglicht, einen Prozess asynchron auszuführen und auf sein Ende zu reagieren - und es die erste war, die mir eine Suche präsentierte.
Die Run-Methode des WScript.Shell-Objektes erlaubt Dir ebenfalls, einen Prozess asynchron auszuführen, ich hab' allerdings auf die Schnelle keine Möglichkeit gesehen, wie man auf das Ende des Prozesses reagieren kann. Du verhinderst die asynchrone Ausführung explizit mit Deinem dritten Parameter, dem Du den Wert true zuweist.
Allerdings ist die Remote-Ausführung etwas trickreich und standardmäßig nicht erlaubt.
Am einfachsten erreichst Du das *erste* Ziel, das Blinken der Scroll-Lock-Anzeige mit der Exec-Methode.
In Deinem Code vereinfacht sich die Funktion Flashlight() zu:
Function FlashLight()
wscript.sleep 220
wss.sendkeys "{SCROLLLOCK}"
End Function
die Aufrufstelle ändert sich (mit der jetzt unpassend benannten Variablen ReturnCode) zu:
Dim ReturnCode
' Starte den Download asynchron
Set ReturnCode = wss.Exec(srun)
' Lasse während der Download läuft, die Scroll-Lock-Taste blinken.
Do While ReturnCode.Status = 0
FlashLight
Loop
' TODO: Zähler einbauen, um am Ende Scroll-Lock wieder auszuschalten,
' wenn die Anzahl der Aufrufe von Flashlight() ungerade war.
Nachteil dieses ersten Schrittes ist, dass Dir bei Exec() keine Parameter zur Fenstersteuerung zur Verfügung stehen. Das kriegst Du aber sicher selbst hin.
Freundliche Grüße
Vinzenz