找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11842|回复: 5

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

[复制链接]
发表于 2023-7-20 17:19:21 | 显示全部楼层 |阅读模式
本帖最后由 mzzyb 于 2023-8-30 17:57 编辑

求一个每隔1分钟查找一下给定的进程名在不在。(指定进程有没有运行)。如果有在运行,过1分继续查找指定进程在不在,如果指定进程不在,执行代码(这个代码我已经写好了)。退出vbs
求大佬帮忙写一个。
发表于 2023-7-21 09:59:36 | 显示全部楼层

  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

复制代码
发表于 2023-7-21 10:02:40 | 显示全部楼层
查找指定时间,运行文件后退出:

  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

复制代码
发表于 2023-7-21 10:04:21 | 显示全部楼层
好像写错了,留给大家改吧
 楼主| 发表于 2023-7-21 17:13:08 | 显示全部楼层
好像写错了,留给大家改吧
FenoX 发表于 2023-7-21 10:04



    你的函数CheckProcess返回值那块(39)行可能错了吧,我的理解应该return found
我也是初学者,我没见过这种写法,瞎猜的
发表于 2023-7-21 22:52:11 | 显示全部楼层
回复 5# mzzyb


    没错 found是一个普通变量 vbs里返回不是用return
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:14 , Processed in 0.018214 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表