如何在VBScript中让命令窗口以最小化状态运行?
问题:让AutoHotKey脚本运行时命令窗口最小化
我有如下VBS脚本,用于运行一个批量重命名文件的批处理(将文件夹内所有文件重命名为随机数字):
Set objShell = WScript.CreateObject( "WScript.Shell" ) objShell.Run("""D:\Resources\ABC\__Randomise.bat"""), 2 Set objShell = Nothing
该重命名程序需要手动确认才能继续,我用AutoHotKey实现了自动确认的脚本,并用VBS调用它:
Set app = CreateObject("Shell.Application") app.ShellExecute "C:\Users\123\Batch Files\Scripts\Keystroke - Enter.ahk", , , "runas" Set objShell = Nothing
目前脚本运行正常,但我希望AHK脚本弹出的命令窗口以最小化状态显示。在第一段VBS中添加, 2实现了批处理窗口最小化,但将同样参数加到AHK的调用代码里会导致脚本出错。请问有没有无需额外程序的方法实现这个需求?
解决方案
方法1:补全ShellExecute的窗口状态参数
Shell.Application.ShellExecute的完整参数格式包含第五个控制窗口显示的参数,你之前未传入该参数。直接在现有代码末尾添加2(代表最小化窗口)即可,注意参数顺序不能错乱:
Set app = CreateObject("Shell.Application") app.ShellExecute "C:\Users\123\Batch Files\Scripts\Keystroke - Enter.ahk", , , "runas", 2 Set app = Nothing
常用的showWindow参数值:
- 1:正常显示窗口
- 2:最小化窗口
- 0:完全隐藏窗口
方法2:改用WScript.Shell.Run调用AHK脚本
如果你更熟悉WScript.Shell.Run的用法,也可以用它来调用AHK脚本,同时指定最小化状态和管理员权限:
Set objShell = WScript.CreateObject("WScript.Shell") ' 通过runas前缀获取管理员权限,末尾的2指定窗口最小化 objShell.Run("runas /user:administrator ""C:\Users\123\Batch Files\Scripts\Keystroke - Enter.ahk"""), 2 Set objShell = Nothing
若不需要管理员权限,直接删除runas /user:administrator部分即可。
内容的提问来源于stack exchange,提问作者user3146967
相关产品推荐
相关产品推荐

