[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

  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
复制代码

TOP

查找指定时间,运行文件后退出:
  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
复制代码

TOP

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

TOP

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



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

TOP

回复 5# mzzyb


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

TOP

返回列表