1.8k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo Welt,

ich hab ein VBS Script erstellt, welches einen etwas komplizierten Archivierungsprozess steuert. Das Script an sich funktioniert super. Aber:
Das Script arbeitet im Hintergrund und meldet sich erst, wenn es fertig ist. Bis zur Beendigung des Scripts weiß der Nutzer nicht ob es läuft oder nicht, da es ja keine Anzeige gibt. Meine Idee ist, bei Start des Scripts ein Fenster zu öffnen ( BItte warten...), welches von Script wieder geschlossen wird. Ideal wäre ein Textbox deren Inhalt ich vom Script aus verändern kann.

Das Script sollte mit wscript und cscript laufen.

Habt ihr eine Idee wie ich das Umsetzen kann?

Habe schon mit MsgBox probiert, aber die muss der Nutzer selber schließen. Im Netz fand ich noch den Hinweis den IE oder ähnliche Programme zu kapern. Das ist mir jedoch reichlich overdone für mein Vorhaben.

Vielen Dank für eure Hilfe

MFG Jens

3 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
VBS hat keine grafische Oberfläche - dementsprechend kann es das gar nicht, was du vorhast. Eine MsgBox oder ein Input sind die Ausnahme und darüberhinaus modal (das Skript läuft erst weiter, nachdem diese Fenster geschlossen wurden).

Es gibt Drittherstellerlösungen - diese müssen dann aber auf jedem betreffenden Rechner installiert sein (z.B. wshNonModalDialog).

Alternativ liegt eine Lösung aber sehr nahe: starte deine VBS-Datei doch per CMD.EXE. Vorteil: das Eingabeaufforderungsfenster könnte die gesamte Skriptdauer über angezeigt werden und schließt sich erst nach dessen Beendigung. Per "echo" könntest du dann ja entsprechenden Text ausgeben.
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Du könntest auch Dein Script in eine HTA Datei einbinden:

<html>
<head>
<HTA:APPLICATION ID="DeinScriptID" APPLICATIONNAME="DeinScriptName">
<script type="text/vbscript">
'Dein Script
</script>
</head>
<body onLoad="start()">
<div id="messages"></div>
</body>
</html>


Damit ist so ziemlich alles möglich. Du bekommst quasi ein recht anständiges GUI geschenkt. Theoretisch kannst Du Dir einen Progressbar nach belieben designen.
Allerdings müsstest Du dann vermutlich Deinen Code etwas anpassen.

Dann ist nämlich nicht mehr cscript.exe oder wscript.exe für die ausführung verantwortlich, sondern mshta.exe, und das WScript objekt steht nicht mehr zur verfügung. Du kannst aber trotzdem alles machen, was Du willst, vermute ich.

Für das "Bitte warten..." müsstest Du die eigentliche funktion über window.setTimeout starten, weil das Fenster sonst erst nach ablauf des scriptes aktualisiert wird.

Du wirst sicherlich das FileSystemObject brauchen.
0 Punkte
Beantwortet von
Hallo,

Vielen Dank für eure Antworten. Ich werde es die nächsten Tage mal ausprobieren und mich dann nohmal melden.

MFG Jens
...