使用批处理文件/CMD切换窗口焦点

4
我有一个Windows应用程序,使用任务计划程序在启动时启动后没有焦点(即我无法在应用程序中执行键盘命令,直到我点击应用程序以获得焦点)。焦点在桌面上。
该应用程序通过任务计划程序启动,因为它需要最高特权来启动(绕过UAC提示)。
似乎只有第三方应用程序可用来支持切换到该应用程序。我尝试使用批处理文件启动命令来切换焦点,但我找不到任何Windows批处理文件命令可以切换焦点。

1
那是因为没有任何的。 - SomethingDark
你可以尝试使用sendKeys.bat来实现程序相关操作。如果只需要将应用程序置于焦点状态,可以省略发送按键部分,只需指定窗口名称即可 - call sendKeys.bat "WindowTitle" "" - npocmaka
如果可以接受的话,PowerShell可以实现这个功能:https://dev59.com/4lgQ5IYBdhLWcg3wkEtJ - SomethingDark
https://stackoverflow.com/questions/52381791/wscript-shell-appactivate-doesnt-work-every-time/52403754#52403754 - CatCat
2个回答

2

使用Windows脚本可以切换到前台。为此,需要提供一个由批处理命令创建的文件。在脚本处理完成后,该文件将被删除。以下是命令:

echo new ActiveXObject("WScript.Shell").AppActivate("Firefox"); > tmp.js
cscript //nologo tmp.js & del tmp.js

1

    @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名称。 - haseakash
@Matt Williamson:这是我正在使用的工作脚本。它完美地运行。这是一个混合JScript批处理文件代码。将代码复制为原样。保存为.bat文件。用您的应用程序名称(如app.exe)替换VOR.exe。 - haseakash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接