Назад | Перейти на главную страницу

Скрипт для обертывания приложения и ожидания его завершения

Мне нужен сценарий vb, который обернет приложение, которое будет оставаться открытым до завершения приложения. Я хочу иметь возможность вызывать следующую команду

"setup.exe / qb / I Autocad2010.ini / language en-us"

Но мне нужно, чтобы сценарий vb продолжал работать до завершения установки.

Есть ли кто-нибудь, кто может помочь с этим?

Большое спасибо заранее

Обновленная версия

Следующая программа выполнит вашу программу установки, а затем подождите, пока больше не будет экземпляров setup.exe Бег. Вы можете установить максимальное значение тайм-аута (чтобы оно не зависало вечно).

Обратите внимание, что это не может определить, настроить сделано, только независимо от того, setup.exe процесс запущен. Это незначительное различие, но важное.

Option Explicit

Const PROC_NAME = "setup.exe"
Const RUN_CMD = "setup.exe /qb /I Autocad2010.ini /language en-us"
Const SLEEP_INTERVAL_MS = 1000
Const WAIT_TIMEOUT_MS = 1500000 ' = 1000 * 60 * 25 ms = 25 mins

Dim objWshShell, objWMIService
Dim colProcesses, objProcess
Dim intWaited, blnProcessTerminated

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run RUN_CMD

intWaited = 0
blnProcessTerminated = False
While intWaited < WAIT_TIMEOUT_MS And Not blnProcessTerminated
    Set colProcesses = objWMIService.ExecQuery(_
        "Select * from Win32_Process where Name='" & PROC_NAME & "'")

    blnProcessTerminated = True
    For Each objProcess In colProcesses
        blnProcessTerminated = False
    Next

    WScript.Sleep(SLEEP_INTERVAL_MS)
    intWaited = intWaited + SLEEP_INTERVAL_MS
Wend

Это относительно просто:

Option Explicit

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run "setup.exe /qb /I Autocad2010.ini /language en-us", 1, True

Параметры к Run метод описаны более подробно на сайте MSDN. Самое главное, True заставляет скрипт ждать, пока setup.exe закончился.