登录时启动并最小化Quake Terminal的WSF脚本实现问题
解决Windows Terminal Quake模式窗口焦点切换问题
你的核心问题是:切换到Quake模式后,Quake窗口是独立的窗口实例,和初始Terminal进程的PID不绑定,所以用初始进程PID调用AppActivate无法切换到Quake窗口,导致后续操作失效。以下是沿用你现有思路的修改方案:
修改后的WSF脚本
<package> <job id="vbs"> <script language="VBScript"> Set objShell = WScript.CreateObject("WScript.Shell") Function SendKeysToByPID(process, keys, wait) objShell.AppActivate(process.ProcessID) objShell.SendKeys keys WScript.Sleep wait End Function Function SendKeysToByTitle(windowTitle, keys, wait) objShell.AppActivate(windowTitle) objShell.SendKeys keys WScript.Sleep wait End Function ' 打开初始Terminal窗口 Set terminal = objShell.Exec("wt") WScript.Sleep 500 ' 切换到Quake模式 SendKeysToByPID terminal, "^(`)", 1000 ' 通过窗口标题激活Quake窗口并最小化(Alt+空格+N是标准最小化快捷键) SendKeysToByTitle "Windows Terminal (Quake)", "% {n}", 1000 ' 切回初始Terminal窗口并关闭 SendKeysToByPID terminal, "exit{ENTER}", 1000 </script> </job> </package>
关键修改说明
- 新增
SendKeysToByTitle函数:通过窗口标题激活目标窗口,解决Quake窗口无法通过初始PID激活的问题。 - Quake窗口默认标题为
Windows Terminal (Quake),如果你的Terminal修改过标题,需要对应调整这个参数。 - 用
% {n}(即Alt+空格+N)实现Quake窗口的最小化,这是Windows标准窗口操作快捷键,无需额外配置。 - 重新用初始Terminal的PID切回原窗口,执行
exit命令关闭它。
注意事项
- 如果Terminal启动较慢,可适当延长
WScript.Sleep的等待时间(单位:毫秒),避免操作过早执行导致失效。 - 确保你的Quake模式快捷键确实设置为
Ctrl+``,和脚本中的^()匹配。
内容的提问来源于stack exchange,提问作者James Richardson
相关产品推荐
相关产品推荐

