6 Stimmen

Wie kann man programmgesteuert auf das Beenden eines Shell-Befehls warten?

Ich sende E-Mails in einem Programm auf diese Weise:

Call Shell(smtpPath, emailInput...)

Dies funktioniert gut, außer wenn ich die Funktion zweimal aufrufe, läuft die Funktion beim ersten Mal, ruft den Shell-Befehl auf, dann läuft die Funktion erneut und ruft den Shell-Befehl erneut auf, aber der erste Shell-Befehl ist noch nicht abgeschlossen, daher kommt es zu einem Fehler, weil der zweite Shell-Befehl versucht, dieselbe SMTP-Datei wie der erste zu verwenden (die noch in Benutzung ist).

Wie kann ich die Funktion dazu bringen, zu warten, bis der Shell-Befehl abgeschlossen ist?

Zusatz: Gibt es eine Möglichkeit zu überprüfen, ob die Datei verwendet wird, und wenn ja, diese zu pausieren und es dann erneut zu versuchen?

6voto

Anders Lindahl Punkte 39752

Sie könnten WScript.Shell verwenden, und dessen run Methode:

Set objShell = CreateObject("WScript.Shell")
result = objShell.Run(smtpPath & " " & emailInput, 0, true)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X