Windows аналог 1 $ (PID последнего запущенного процесса)

1767
Dime

Как получить Windows PID последнего запущенного процесса с использованием WScript.Shell или аналогичного?

Я знаю, как запустить процесс и получить его PID:

Set oExec = WshShell.Exec( program ) Set pid = oExec.ProcessID 

Теперь проблема в том, что программа представляет собой другой пакет (или может быть VBScript). Пакет запускает реальную программу, которую я хотел бы получить PID.

В Linux (сценарий оболочки) это очень легко сделать. простоpid=$!

Но что я могу сделать на Windows?

3
Почему бы просто не вернуть PID в качестве возвращаемого значения (или просто отправить его на стандартный вывод) с помощью VBScript? Breakthrough 12 лет назад 0
Благодарю. Я думаю, что возвращаемое значение ограничено 256. Но похоже, что единственный способ (с разумными усилиями) - это чтение stdout в VBScript. Я думаю, что могу использовать свойство `oExec.StdOut`, но никогда еще не пробовал ... Dime 12 лет назад 0

1 ответ на вопрос

3
Tex Hex

Я думаю, что нет эквивалента в $! В винде.

Если вы хотите получить PID третьего процесса, вы можете найти его с помощью WMI. Пример этого может быть найден здесь (просто поиск и отображение информации) или здесь (поиск и уничтожение процесса).

Если исполняемый файл третьего имени неизвестен, вы можете использовать объект Job, который группирует несколько процессов в один объект. И вы можете легко убить их всех сразу с помощью TerminateJobObject .

См. MSDN для краткого обзора или этого вопроса о StackOverflow .

Однако я не знаю, можно ли использовать эти методы из VBScript.

Не могу проголосовать :( Недостаточно репутации. Dime 12 лет назад 0
Делайте это, когда у вас достаточно репутации - шутка, а не проблема. Если информация была полезной, мне этого достаточно. Tex Hex 12 лет назад 0