Board logo

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

作者: mzzyb    时间: 2023-7-20 17:19     标题: [已解决]求助VBS每隔1分钟查找一下给定的进程名在不在。

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

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

  1. [查找进程间隔时间.vbs]
  2. Option Explicit
  3. Dim a,b
  4. a=inputbox ("输入要查找的进程名")
  5. b=inputbox ("输入间隔时间:(单位:毫秒)")
  6. Dim processName
  7. processName = a  ' 要查找的进程名
  8. Do
  9.     If CheckProcess(processName) Then
  10.         WScript.Echo "进程 " & processName & " 正在运行"
  11.     Else
  12.         WScript.Echo "进程 " & processName & " 未找到"
  13.     End If
  14.    
  15.     WScript.Sleep b
  16. Loop
  17. Function CheckProcess(processName)
  18.     Dim objWMIService, colProcessList, objProcess
  19.     Dim found
  20.     found = False
  21.    
  22.     Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
  23.     Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & processName & "'")
  24.     For Each objProcess in colProcessList
  25.         found = True
  26.         Exit For
  27.     Next
  28.    
  29.     CheckProcess = found
  30. End Function
复制代码

作者: FenoX    时间: 2023-7-21 10:02

查找指定时间,运行文件后退出:
  1. Option Explicit
  2. Dim processName
  3. processName = "awa.exe"  ' 要查找的进程名
  4. Do
  5.     If CheckProcess(processName) Then
  6.         WScript.Echo "进程 " & processName & " 正在运行"
  7.     Else
  8.         WScript.Echo "进程 " & processName & " 未找到"
  9.         
  10.         ' 执行你已经写好的代码
  11.         Call YourCustomCode()
  12.         
  13.         Exit Do '
  14.     End If
  15.     ' 等待1分钟
  16.     WScript.Sleep 60000
  17. Loop
  18. Sub YourCustomCode()
  19.    
  20. End Sub
  21. Function CheckProcess(processName)
  22.     Dim objWMIService, colProcessList, objProcess
  23.     Dim found
  24.     found = False
  25.    
  26.     Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
  27.     Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & processName & "'")
  28.     For Each objProcess in colProcessList
  29.         found = True
  30.         Exit For
  31.     Next
  32.    
  33.     CheckProcess = found
  34. End Function
复制代码

作者: FenoX    时间: 2023-7-21 10:04

好像写错了,留给大家改吧
作者: mzzyb    时间: 2023-7-21 17:13

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



    你的函数CheckProcess返回值那块(39)行可能错了吧,我的理解应该return found
我也是初学者,我没见过这种写法,瞎猜的
作者: jyswjjgdwtdtj    时间: 2023-7-21 22:52

回复 5# mzzyb


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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2