一、使用 `WScript.Shell` 关闭指定程序
关闭单个程序
通过窗口标题关闭程序:
```vbs
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.AppActivate "程序标题" ' 替换为目标程序标题
objShell.SendKeys "{F4}"
```
*注意:需确保窗口标题与目标程序完全匹配,否则可能无法激活窗口。*
批量关闭程序
在同一脚本中添加多个 `AppActivate` 和 `SendKeys` 语句:
```vbs
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.AppActivate "程序标题1"
objShell.SendKeys "{F4}"
WScript.Sleep 1000
objShell.AppActivate "程序标题2"
objShell.SendKeys "{F4}"
```
*建议将多个标题分行书写,避免命令执行过快导致错误。*
二、使用 `taskkill` 强制关闭程序
通过命令行强制终止程序进程:
```vbs
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "taskkill /F /IM 程序名.exe", 0, True
```
`/F`:强制关闭进程
`/IM`:指定进程名称(如 `notepad.exe`)
`0`:隐藏命令窗口
`True`:等待进程结束
三、注意事项
权限问题
强制关闭程序需管理员权限,建议以管理员身份运行VBScript文件(右键选择“以管理员身份运行”)。
窗口标题匹配
`AppActivate` 对窗口标题敏感,若标题包含空格或特殊字符,需用引号括起来(如 `"Program Files\Notepad.exe"`)。
系统限制
Windows 11 默认禁用了VBScript(通过系统设置关闭),需通过高级启动选项重新配置。此操作涉及系统级设置,需谨慎操作。
四、替代方案:PowerShell
若需更可靠的进程管理,推荐使用 PowerShell:
```powershell
强制关闭进程
Get-Process -Name "程序名" | Stop-Process -Force
批量关闭进程
Get-Process | Where-Object { $_.ProcessName -match "程序名" } | Stop-Process -Force
```
PowerShell 提供了更强大的进程过滤和管理功能,且无需依赖窗口标题匹配。