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进程判断的文章就介绍到这