【问题标题】:VBScript get process id by process name or program executable nameVBScript 通过进程名或程序可执行文件名获取进程id
【发布时间】:2017-12-05 01:13:09
【问题描述】:

对于刚从我的 VBScript 启动的任何程序,我需要完全按照我在问题中提出的要求进行操作。

我正在从 VBscript 启动系统属性程序,如下所示:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "SystemPropertiesAdvanced.exe"
WScript.Sleep 1000

现在我想获取SystemPropertiesAdvanced.exe程序的进程ID,我该怎么做?

我想完全通过 VBScript 来做这件事,而不是尽可能多地混合编码。

【问题讨论】:

  • (第一个谷歌结果)[experts-exchange.com/questions/21638733/…
  • 先用我打开的程序检查答案,它不工作,也许它可以和计算器一起工作,它是一个小程序,我想要系统属性的进程ID

标签: windows vbscript process executable pid


【解决方案1】:
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_Process where name='Calculator.exe'")
'msgbox colitems
For Each objItem in colItems
    msgbox objItem.name & " " & objItem.ProcessID & " " & objItem.CommandLine
    If objItem.name = "Calculator.exe" then objItem.terminate
Next

这使用 WMI 来查询 Calculator.exe,然后终止它。

【讨论】:

  • 您的回答绝对正确,谢谢,但我有主要问题,我们可以在聊天中讨论吗?
  • 我想通过 id 激活 SystemPropertiesAdvanced.exe 进程,然后我想通过代码本身按 ENTER ,这不起作用,你能帮忙吗?
  • 也许您应该使用Set WshEnv = WshShell.Environment("PROCESS") WshEnv("TestVar") = "Windows Script Host" 来更改当前进程。如果要使其永久化,请编辑注册表。
【解决方案2】:

这是使用WshShell对象启动进程并获取进程ID的方法:

Dim sh : Set sh = CreateObject("WScript.Shell")
Set Rtn = sh.Exec("SystemPropertiesAdvanced.exe")     'write the full path of application 
WScript.Sleep 1000                                 'stop script 1 sec waiting run the App
MsgBox "my App PID  :   "  & Rtn.ProcessID                            'Process ID for App

或使用WMI启动进程并获取进程ID

set process = GetObject("winmgmts:Win32_Process")
process.Create "SystemPropertiesAdvanced.exe",null,null,processid
MsgBox "my App PID  :   "  & Processid  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2019-05-09
    • 2012-01-14
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多