VBS进程判断代码
vbs核心代码
OptionExplicit
DimobjWMIService,colProcessList,strComputer
strComputer="."
SetobjWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&strComputer&"\root\cimv2")
SetcolProcessList=objWMIService.ExecQuery("Select*fromWin32_ProcessWhereName='excel.exe'")
IfcolProcessList.Count>0Then
MsgBox"检测到EXCEL程序运行中,程序退出!"
WScript.Quit
EndIf
SetcolProcessList=Nothing
SetobjWMIService=Nothing
WScript.Quit
当然你可以判断winrar.exe等等
下面附一个代码,原来中文命名的,毛票票已经修改为英文命名并且正常运行了,因为时间问题,需要的朋友可以自行修改精简
'检测进程
proname="qq.exe"
reName=IsProcess(proname)
IfreName=TrueThen
msgbox"发现进程"
ElseIfreName=FalseThen
msgbox"没有发现进程"
EndIf
'检测进程优化后的代码
IfIsProcess("qq.exe")=TrueThen
msgbox"发现进程"
Else
msgbox"没有发现进程"
EndIf
'检测进程组
proName_all="qq.exe|notepad.exe"
reName=IsProcessEx(proName_all)
IfreName=TrueThen
msgbox"发现进程"
ElseIfreName=FalseThen
msgbox"没有发现进程"
EndIf
'检测进程组优化后的代码
IfIsProcessEx("qq.exe|notepad.exe")=TrueThen
msgbox"发现进程"
Else
msgbox"没有发现进程"
EndIf
'结束进程前台执行
proname="qq.exe"
CallCloseProcess(proname,1)
'结束进程后台执行
proname="qq.exe"
CallCloseProcess(proname,0)
'结束进程组前台执行
proName_all="qq.exe|notepad.exe"
CallCloseProcessEx(proName_all,1)
'结束进程组后台执行
proName_all="qq.exe|notepad.exe"
CallCloseProcessEx(proName_all,0)
'实例应用结束进程前台执行10秒超时
proname="qq.exe"
Fori=1to10
CallCloseProcess(proname,1)
Delay1000
reName=IsProcess(proname)
IfreName=FalseThen
ExitFor
EndIf
Next
IfreName=TrueThen
msgbox"结束进程失败"
Else
msgbox"结束进程成功"
EndIf
'实例应用结束进程前台执行优化后的代码(直到型循环)有些进程VBS检测不到所以先关闭后检测
Do
CallCloseProcess("qq.exe",1)
Delay1000
LoopWhileIsProcess("qq.exe")=True
msgbox"结束进程成功"
'实例应用结束进程组后台执行10秒超时
proName_all="qq.exe|notepad.exe"
Forj=1to10
CallCloseProcessEx(proName_all,0)
Delay1000
reName=IsProcessEx(proName_all)
IfreName=FalseThen
ExitFor
EndIf
Next
IfreName=TrueThen
msgbox"结束进程失败"
Else
msgbox"结束进程成功"
EndIf
'实例应用结束进程组后台执行优化后的代码(直到型循环)有些进程VBS检测不到所以先关闭后检测
Do
CallCloseProcessEx("qq.exe|notepad.exe",0)
Delay1000
LoopWhileIsProcessEx("qq.exe|notepad.exe")=True
msgbox"结束进程成功"
'函数子程序部分代码
'检测进程
FunctionIsProcess(ExeName)
DimWMI,Obj,Objs,i
IsProcess=False
SetWMI=GetObject("WinMgmts:")
SetObjs=WMI.InstancesOf("Win32_Process")
ForEachObjInObjs
IfInStr(UCase(ExeName),UCase(Obj.Description))<>0Then
IsProcess=True
ExitFor
EndIf
Next
SetObjs=Nothing
SetWMI=Nothing
EndFunction
'结束进程
SubCloseProcess(ExeName,RunMode)
dimws
Setws=createobject("Wscript.Shell")
ws.run"cmd.exe/CTaskkill/f/im"&ExeName,RunMode
Setws=Nothing
EndSub
'检测进程组
FunctionIsProcessEx(ExeName)
DimWMI,Obj,Objs,ProcessName,i
IsProcessEx=False
SetWMI=GetObject("WinMgmts:")
SetObjs=WMI.InstancesOf("Win32_Process")
ProcessName=Split(ExeName,"|")
ForEachObjInObjs
Fori=0toUBound(ProcessName)
IfInStr(UCase(ProcessName(i)),UCase(Obj.Description))<>0Then
IsProcessEx=True
ExitFor
EndIf
Next
Next
SetObjs=Nothing
SetWMI=Nothing
EndFunction
'结束进程组
SubCloseProcessEx(ExeName,RunMode)
dimws,ProcessName,CmdCode,i
ProcessName=Split(ExeName,"|")
Fori=0toUBound(ProcessName)
CmdCode=CmdCode&"/im"&ProcessName(i)
Next
Setws=createobject("Wscript.Shell")
ws.run"cmd.exe/CTaskkill/f"&CmdCode,RunMode
Setws=Nothing
EndSub
好了这篇关于vbs进程判断的文章就介绍到这