web-dev-qa-db-fra.com

Comment suspendre une exécution vbscript?

Comment puis-je suspendre l'exécution d'un script de l'intérieur? Quelque chose comme la fonction Sleep WinAPI?

13
Andrej Kirejeŭ

Vous pouvez utiliser un objet WScript et appeler la méthode Sleep dessus:

Set WScript = CreateObject("WScript.Shell")
WScript.Sleep 2000 'Sleeps for 2 seconds

Une autre option consiste à importer et utiliser la fonction WinAPI directement (ne fonctionne que dans VBA, merci @ Helen ):

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sleep 2000
17
Oded

L'extrait de script ci-dessous crée un sous-pause qui affiche le texte de la pause dans une chaîne et attend la touche Entrée. z peut être n'importe quoi. Idéal si une intervention utilisateur multiple est requise, des pauses sont nécessaires. Je le garde juste dans mon modèle de script standard.

Pause("Press Enter to continue")

Sub Pause(strPause)
     WScript.Echo (strPause)
     z = WScript.StdIn.Read(1)
End Sub
19
MacAnanny M

Avec 'Enter', il vaut mieux utiliser ReadLine () ou Read (2), car la touche 'Enter' génère 2 symboles. Si l'utilisateur saisit un texte, Pause () sera également ignoré même avec Read (2). Alors ReadLine () est mieux:

Sub Pause()
    WScript.Echo ("Press Enter to continue")
    z = WScript.StdIn.ReadLine()
End Sub

D'autres exemples sont disponibles dans http://technet.Microsoft.com/en-us/library/ee156589.aspx

10
Sergey Enns