Script VBS : Attendre qu’un processus se termine avant de poursuivre.

Lors de vos « développements » de script VBS, notamment lors de packaging applicatif, il est souvent nécessaire d’exécuter une application et attendre la fin de cette exécution avant d’enchainer d’autres actions.






Pour cela, tout ou presque est prévu ! La méthode WshShell.run peut prendre 3 paramètres:

 
strCommand = “notepad.exe”;
  • inWindowsStyle permet de choisir le type de fenêtre du programme , par exemple la valeur 3 pour ouvrir notepad en plein écran;
  • Et bWaintOnReturn est un booléen qui permet d’attendre la fin de l’exécution du programme avant de poursuivre.

Dans certains cas, l'attribut bWaintOnReturn ne fonctionne pas ... par exemple lors du packaging d'Oracle Autovue ... Dans ce cas, suivez la procédure suivante !

L’exemple de script ci-dessous vous montre comment exécuter notepad.exe et attendre que l’exécution de Notepad.exe soit terminée pour enchainer d’autres actions au sein du même script.

 
'Variables Initialization
	set WshShell = WScript.CreateObject("WScript.Shell")
	currentDirectory = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))

'Run Silent Installation with installation parameters.
	WshShell.run(currentDirectory & "'Run Silent Installation with installation parameters.
	WshShell.run(currentDirectory & "avsetup.exe -i silent -f "¤tDirectory&"Config.txt").exe -i silent -f "¤tDirectory&"Config.txt")

'Wait while avsetup.exe is running
	Dim objWMIServices
	Set objWMIServices = GetObject("winmgmts:\\localhost\root\CIMV2") 

	WScript.Sleep 5000 'Wait for 5 Second to ensure that the process list has been refreshed
	ProcessRunning = TRUE
		Do Until Not ProcessRunning
			Set colProcessList = objWMIServices.ExecQuery ("Select * from Win32_Process Where Name = 'avsetup.exe'")
			if colProcessList.Count = 0 then
					ProcessRunning = False
					'msgbox "not running"
			else
					ProcessRunning = True
					WScript.Sleep 1000 'Wait for 1 Second
					'msgbox "Running"
			End If    
		Loop
		
'Actions when notepad.exe is not running
 	...
	...
	...

WshShell.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

strCommand = “notepad.exe”;
inWindowsStyle permet de choisir l’état de la fenêtre du programme que tu démarre, par exemple la valeur 3 pour ouvrir notepad en plein écran;
Et bWaintOnReturn est le booléen qui te permet d’attendre la fin de l’exécution de ton programme pour passer à la suite.

Please follow and like us:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Social media & sharing icons powered by UltimatelySocial