Найдите идентификатор моего собственного процесса в VBScript

Я использую следующий фрагмент кода для определения ID процесса, в качестве которого запущен мой vbscript:

On Error Resume Next
Dim iMyPID : iMyPID = GetObject("winmgmts:root\cimv2").Get("Win32_Process.Handle='" & CreateObject("WScript.Shell").Exec("mshta.exe").ProcessID & "'").ParentProcessId
If Err.Number <> 0 Then Call Handle_Error(Err.Description)
On Error Goto 0

На моей машине Windows 7 (32-бит) это работает примерно 90% времени, и iMyPID содержит ID процесса текущего запущенного скрипта. Однако 10% времени Handle_Error вызывается с сообщением об ошибке "SWbemServicesEX: Not found".

Недавно кто-то еще под управлением Windows 7 (64-bit) сообщил, что Handle_Error всегда вызывается с сообщением об ошибке "Out of memory". Это кажется безумным сообщением об ошибке только для того, чтобы узнать идентификатор собственного процесса!

Может ли кто-нибудь посоветовать лучший способ сделать это?

9
задан Richard 28 November 2011 в 12:49
поделиться