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

时间:2017-03-02 12:14:14

标签: vbscript pid

我是vbs中的绝对菜鸟,但到目前为止,我已经修改了一个脚本,它扫描所有正在运行的进程,如果它们属于'应用程序',那么它的名称将输出到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,我会继续这样做:

  

对象不支持此属性或方法:
   'obj.ProcessID'
    代码:800A02B6

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

有人可以告诉我为什么它在上面的代码中不起作用。

感谢。

1 个答案:

答案 0 :(得分:2)

如有疑问,请阅读文档。 Task个对象没有财产ProcessID。更好地使用WMI来枚举进程:

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