返回列表 发帖

[问题求助] [已解决]求助VBS每隔1分钟查找一下给定的进程名在不在。

本帖最后由 mzzyb 于 2023-8-30 17:57 编辑

求一个每隔1分钟查找一下给定的进程名在不在。(指定进程有没有运行)。如果有在运行,过1分继续查找指定进程在不在,如果指定进程不在,执行代码(这个代码我已经写好了)。退出vbs
求大佬帮忙写一个。

[查找进程间隔时间.vbs]
Option Explicit
Dim a,b
a=inputbox ("输入要查找的进程名")
b=inputbox ("输入间隔时间:(单位:毫秒)")
Dim processName
processName = a  ' 要查找的进程名
Do
    If CheckProcess(processName) Then
        WScript.Echo "进程 " & processName & " 正在运行"
    Else
        WScript.Echo "进程 " & processName & " 未找到"
    End If
   
    WScript.Sleep b
Loop
Function CheckProcess(processName)
    Dim objWMIService, colProcessList, objProcess
    Dim found
    found = False
   
    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
    Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & processName & "'")
    For Each objProcess in colProcessList
        found = True
        Exit For
    Next
   
    CheckProcess = found
End FunctionCOPY

TOP

查找指定时间,运行文件后退出:
Option Explicit
Dim processName
processName = "awa.exe"  ' 要查找的进程名
Do
    If CheckProcess(processName) Then
        WScript.Echo "进程 " & processName & " 正在运行"
    Else
        WScript.Echo "进程 " & processName & " 未找到"
        
        ' 执行你已经写好的代码
        Call YourCustomCode()
        
        Exit Do '
    End If
    ' 等待1分钟
    WScript.Sleep 60000
Loop
Sub YourCustomCode()
   
End Sub
Function CheckProcess(processName)
    Dim objWMIService, colProcessList, objProcess
    Dim found
    found = False
   
    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
    Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & processName & "'")
    For Each objProcess in colProcessList
        found = True
        Exit For
    Next
   
    CheckProcess = found
End FunctionCOPY

TOP

好像写错了,留给大家改吧

TOP

好像写错了,留给大家改吧
FenoX 发表于 2023-7-21 10:04



    你的函数CheckProcess返回值那块(39)行可能错了吧,我的理解应该return found
我也是初学者,我没见过这种写法,瞎猜的

TOP

回复 5# mzzyb


    没错 found是一个普通变量 vbs里返回不是用return
你好

TOP

返回列表