【发布时间】:2016-03-14 13:27:06
【问题描述】:
我可以在 cmd 上使用一个命令来切换到/聚焦于选定的应用程序窗口吗?
假设我有三个应用程序在工作:A、B、C,目前我专注于 B。是否有命令(不是快捷方式)切换到/专注于应用程序 A?
也许我可以批量处理?
我在 Windows 上工作。
【问题讨论】:
标签: windows batch-file command-line
我可以在 cmd 上使用一个命令来切换到/聚焦于选定的应用程序窗口吗?
假设我有三个应用程序在工作:A、B、C,目前我专注于 B。是否有命令(不是快捷方式)切换到/专注于应用程序 A?
也许我可以批量处理?
我在 Windows 上工作。
【问题讨论】:
标签: windows batch-file command-line
试试sendKeys.bat:
call sendkeys.bat "Title A" ""
第一个参数是你想要切换到的标题的开头(如果是Some Title,你可以只使用Some,如果它足够独特的话)。第二个参数是空的双引号。
通常,该脚本用于将密钥发送到特定窗口。但是如果您将第二个参数留空(如""),它将不会发送任何密钥。
【讨论】:
if (sh.AppActivate(title)){,OP 也接受了答案。答案本身解释了其余部分。
-h
这应该可行:
echo (new ActiveXObject("WScript.Shell")).AppActivate("app A"); > focus.js
cscript //nologo focus.js
del focus.js
【讨论】:
Access is denied. Input Error: Can not find script file "C:\focus.js". Could Not Find C:\focus.js
我在this gist 中的解决方案非常基于@npocmaka 的回答,但它对OPs 特定问题给出了更完整和准确的答案(我必须合并couple more references 才能到达this):如果命名的应用程序已经在运行,它会激活并恢复它,否则就启动它。
为了完整起见,我将在此处重复代码 - 根据需要替换应用的图像名称和启动它所需的路径:
@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal
for /f "tokens=2" %%i in ('tasklist /FI "IMAGENAME eq Fork.exe" ^| find /I "Fork.exe"') do set pid=%%i
if "%pid%" == "" (
%localappdata%\Fork\Fork.exe
) else (
cscript //E:JScript //nologo "%~f0" "%~nx0" "%pid%"
)
exit /b %errorlevel%
endlocal
@if (@X)==(@Y) @end JScript comment */
var sh=new ActiveXObject("WScript.Shell");
if (sh.AppActivate(WScript.Arguments.Item(1)) == 0) {
sh.SendKeys("% r");
}
【讨论】: