Pozia
18-07-2011, 23:24
Есть такой скрипт Sleep.vbs:
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objService, "Win32_Process").objectSet
Do Until False
Wscript.Sleep 1000
objRefresher.Refresh
Flag = True
For Each objItem in colItems
If InStr(objItem.ExecutablePath, "setup.exe") Then
Flag = False
End If
Next
If Flag = True Then
Exit Do
End If
Loop
Wscript.Sleep 5000
Суть работы состоит в том, что если прописать его в батнике примерно вот так:
.\AdminImage\setup.exe /qb /I .\AdminImage\Pozia.ini /language ru-ru
Sleep.vbs
exit
то работа батника не завершится пока в процессах висит setup.exe. В данном случае это нужно, так как при установке автокада сразу сразу работает один setup.exe, а потом закрывается и запускается другой. Соответственно батник отрабатывает раньше времени, что есть плохо. До недавнего времени скрипт прекрасно работал, но в версии автокада 2012 почему то он начал сам зависать в диспетчере и навсегда, хотя уже все setup.exe давно исчезли в процессах. Вот я и подумал, что если через автоит это можно реализовать, то должно быть надежнее. Буду рад помощи. Заранее спасибо.
PS Если моя просьба реализуемая, то хотелось бы задавать имя процесса через ключ, например так:
Sleep.exe -t setup.exe
Sleep.exe - скомпилированный автоит скрипт.
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objService, "Win32_Process").objectSet
Do Until False
Wscript.Sleep 1000
objRefresher.Refresh
Flag = True
For Each objItem in colItems
If InStr(objItem.ExecutablePath, "setup.exe") Then
Flag = False
End If
Next
If Flag = True Then
Exit Do
End If
Loop
Wscript.Sleep 5000
Суть работы состоит в том, что если прописать его в батнике примерно вот так:
.\AdminImage\setup.exe /qb /I .\AdminImage\Pozia.ini /language ru-ru
Sleep.vbs
exit
то работа батника не завершится пока в процессах висит setup.exe. В данном случае это нужно, так как при установке автокада сразу сразу работает один setup.exe, а потом закрывается и запускается другой. Соответственно батник отрабатывает раньше времени, что есть плохо. До недавнего времени скрипт прекрасно работал, но в версии автокада 2012 почему то он начал сам зависать в диспетчере и навсегда, хотя уже все setup.exe давно исчезли в процессах. Вот я и подумал, что если через автоит это можно реализовать, то должно быть надежнее. Буду рад помощи. Заранее спасибо.
PS Если моя просьба реализуемая, то хотелось бы задавать имя процесса через ключ, например так:
Sleep.exe -t setup.exe
Sleep.exe - скомпилированный автоит скрипт.