You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于WScript.Shell脚本检测计算器运行及Exec方法启动程序的疑问

关于检测计算器是否运行及Exec方法的疑问解答

嘿,我来帮你搞清楚这两个问题!

为什么script.Exec("calc")会启动计算器?

这其实是WScript.Shell.Exec()方法的本职工作哦!这个方法的核心作用就是启动一个外部可执行程序,并创建一个WshExec对象来管理这个刚启动的进程。你传入"calc"(计算器的可执行文件名),系统就会找到calc.exe并启动它,完全是符合这个方法的设计逻辑的~

正确检测计算器是否正在运行的脚本

你现有的代码其实是先启动计算器,然后等待它关闭后弹出提示,这和你想要的「检测程序是否正在运行」的需求刚好相反。如果要检测系统中是否已经有计算器在运行,我们可以用WMI(Windows Management Instrumentation)来查询系统进程,代码示例如下:

' 连接到本地计算机的WMI服务
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
' 查询所有名为calc.exe的进程
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'calc.exe'")

' 根据查询结果判断是否正在运行
If colProcesses.Count > 0 Then
    MsgBox("Calculator is running right now!")
Else
    MsgBox("Calculator isn't open at the moment.")
End If

代码说明:

  • GetObject("winmgmts:\\.\root\cimv2"):建立和本地WMI服务的连接,这是查询系统信息的入口
  • ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'calc.exe'"):执行WQL查询,筛选出所有名为calc.exe的进程
  • 通过colProcesses.Count判断是否存在目标进程:数量大于0就说明计算器正在运行

再说说你原来的代码逻辑

你写的代码是先启动计算器,然后进入循环等待进程结束(oExec.Status = 0表示进程正在运行),当进程关闭后(Status = 1)才弹出提示——这时候计算器已经关闭了,所以这个逻辑其实是「启动计算器并等待它关闭」,而不是检测它是否正在运行哦。

内容的提问来源于stack exchange,提问作者Austin Yen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:10:40