2011-05-11 10 views
6

Estoy enviando mensajes de correo electrónico en un programa de este modo:Cómo esperar programáticamente el comando del shell para finalizar la ejecución?

Call Shell(smtpPath, emailInput...) 

Esto funciona muy bien, excepto si llamo a la función dos veces, la función ejecuta la primera vez, llama al comando shell, entonces la función se ejecuta de nuevo, y llama al comando de shell nuevamente, pero el primer comando de shell no se completa, por lo que hay un error porque el segundo comando de shell intenta usar el mismo archivo smtp que el primero (que todavía está en uso).

¿Cómo puedo hacer que la función espere hasta que el comando de shell haya terminado de ejecutarse?

Addendum: ¿Hay alguna manera de ver si el archivo se está utilizando y, si lo está, duerma, y ​​luego vuelve a intentarlo?

Respuesta

5

Usted podría utilizar WScript.Shell, y es run método:

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