Я использую следующий фрагмент кода для определения 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". Это кажется безумным сообщением об ошибке только для того, чтобы узнать идентификатор собственного процесса!
Может ли кто-нибудь посоветовать лучший способ сделать это?