如何在 vbs 中输出进程 ID / 为什么这不起作用

How to output process id in vbs / why is this not working

我是 vbs 的绝对菜鸟,但到目前为止,我已经修改了一个脚本,它扫描所有 运行 进程,如果它们属于 'application',那么它的名称将输出到csv 文件。

Set Word = CreateObject("Word.Application")
Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set f = fso.CreateTextFile("output.csv", 2)
Set Tasks = Word.Tasks
For Each obj in Tasks
   PID = obj.ProcessID
   If obj.Visible Then f.Writeline obj.Name & "," & PID
Next
Word.Quit

我的目标是获取所有应用程序的列表,并在阅读名称后决定使用它的进程 ID(从 csv 文件中获取)终止并杀死它。

它能够正确输出名称,但是如果我尝试输出 processID,我会一直得到这个:

Object doesn't support this property or method:
'obj.ProcessID'
Code : 800A02B6

网上没有太多帮助,我看到的大多数例子都使用x.processID来查找processID。

谁能告诉我为什么上面的代码不起作用。

谢谢。

如有疑问,请阅读文档。 Task objects don't have a property ProcessID. Better use WMI 用于枚举进程:

Set wmi = GetObject("winmgmts://./root/cimv2")
For Each p In wmi.ExecQuery("SELECT * FROM Win32_Process")
  WScript.Echo p.ProcessId
Next