VBS如何提取指定进程的PID?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBS如何提取指定进程的PID?相关的知识,希望对你有一定的参考价值。

VBS如何提取指定进程的PID?进程不只是一个,不妨举个例子,把1.exe,2.exe,3.exe这三个进程的PID查明并用msgbox一一输出该怎么做?谢谢。
一楼的,对不起,你的代码运行后说是找不到指定文件。我对vbs懂得不多,希望直接给出可用代码,谢谢。

参考技术A 修改后的代码如下:

Set w = GetObject("winmgmts:")
Set p = w.ExecQuery("select * from win32_process where name='1.exe' or name='2.exe' or name='3.exe' ")
if p.Count = 0 then
msgbox "指定进程未运行或用户权限不足以获得其信息。"
else
For Each i In p
msgbox "进程 " & i.name & " 的 PID 是 " & i.ProcessId
Next
end if

以上代码在我机器(win7)上测过没问题的,要是在你那里出错你可贴个截屏上来我试着看看。

------
修改前的:

'使用 WMI 对象

Set w = GetObject("winmgmts:")
Set p = w.ExecQuery("select * from win32_process where name= "& Chr(34) & "chrome.exe" & Chr(34) )
For Each i In p
msgbox "进程 " & i.name & " 的 PID 是 " & i.ProcessId
'i.TerminateProcess '用于杀死该进程
Next

例子是找所有 chrome.exe 的PID,你自己改改就是1、2、3.exe了本回答被提问者采纳
参考技术B dim Const wbemFlagReturnImmediately = &h10
Dim Const wbemFlagForwardOnly = &h20

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objItem In colItems
MsgBox "ProcessId: " & objItem.ProcessId
Next

使用wincc vbs脚本查找进程及如何运行进程

使用vbs代码查看某个进程是否在运行,本文要检查的进程名为 QRscan.exe,其代码如下:

sub CheckProcess

Dim WMI,Objs,Process,Obj
Set WMI=GetObject("WinMgmts:")
Set Objs=WMI.InstancesOf("Win32_Process")
Process=""

‘遍历所有在运行的进程
For Each Obj In Objs
‘Process=Process & Obj.Description & Chr(13) & Chr(10)
Process = Obj.Description
If Process = "QRscan.exe" Then
Msgbox "QRscan.exe在运行中..."
Exit For ‘发现所需进程时退出遍历
end if
Next

End sub

当遍历结束扔没有找到该进程时,可开启该进程,其代码如下:

dim objShell

set objShell = CreateObject(“Wscript.Shell”)

objShell.Run “E:\\QRscan.exe” ,,true  ‘假如此进程路径在E盘根目录 第一个参数:进程路径,第二参数:窗口形式,第三个参数:同步/异步执行;

 

以上是关于VBS如何提取指定进程的PID?的主要内容,如果未能解决你的问题,请参考以下文章

如何杀掉指定进程??

如何指定守护进程的日志和pid目录?

linux中如何根据PID获得进程?

vbs通过pid定位到程序后,如何使用postmessage发送F5到程序里?

AIX - 如何使用进程名称而不是 PID 杀死

Linux 下如何结束指定进程