使用批处理文件/CMD 切换窗口焦点
Posted
技术标签:
【中文标题】使用批处理文件/CMD 切换窗口焦点【英文标题】:Switch Window Focus using a Batch File/CMD 【发布时间】:2019-04-17 09:02:41 【问题描述】:我有一个 Windows 应用程序,当启动时使用任务计划程序启动时没有焦点(即,我无法在应用程序中执行键盘命令,直到我单击应用程序成为焦点)。焦点在桌面上。
应用程序通过任务计划程序启动,因为它需要最高权限才能启动(绕过 UAC 提示)。
似乎只有第三方应用程序支持此切换到应用程序。我曾尝试使用批处理文件启动命令来切换焦点,但启动延迟,但我无法找到任何可以切换焦点的 Windows 批处理文件命令。
【问题讨论】:
那是因为没有。 您可以尝试使用 sendKeys.bat - 仅将应用程序置于焦点,您可以省略发送键部分并仅指向窗口名称 -call sendKeys.bat "WindowTitle" ""
Powershell 可以做到这一点,如果这是可以接受的:***.com/questions/42566799/…
***.com/questions/52381791/…
【参考方案1】:
可以使用 Windows 脚本切换到前台。为此,还需要提供一个将由批处理命令创建的文件。脚本处理后,文件将被删除。命令如下:
echo new ActiveXObject("WScript.Shell").AppActivate("Firefox"); > tmp.js
cscript //nologo tmp.js & del tmp.js
【讨论】:
【参考方案2】:@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal
for /f "tokens=2" %%i in ('tasklist /FI "IMAGENAME eq VOR.exe" ^| find /I "VOR.exe"') do set pid=%%i
if "%pid%" == "" (
%localappdata%\VOR\VOR.exe
) else (
cscript //E:JScript //nologo "%~f0" "%~nx0" "%pid%"
)
exit %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");
【讨论】:
复制所有这些代码...保存为批处理文件..只需将 VOR 替换为您的 exe 名称即可。以上是关于使用批处理文件/CMD 切换窗口焦点的主要内容,如果未能解决你的问题,请参考以下文章