【问题标题】:Focus a batch-started application聚焦批处理启动的应用程序
【发布时间】:2012-01-06 04:48:12
【问题描述】:

我正在通过批处理脚本运行一系列应用程序,我想确保打开的程序始终处于焦点位置。
我们需要确保这一点,因为这是一个实验性设置,我们希望尽量减少必须将焦点更改为全屏窗口等麻烦。

这个问题已经很少发生了不在焦点上。

由于我隐藏了命令窗口,问题变得更加频繁。

任何强制关注序列中的下一个程序的方法,无论是批处理命令、操作系统的一些设置(我们在 Win XP 上)或帮助应用程序都可能会有所帮助。

【问题讨论】:

  • 你得到这个问题的答案了吗?最近我遇到了类似的问题。任何帮助将不胜感激。谢谢。

标签: windows batch-file windows-xp focus window


【解决方案1】:

如果我做对了,start /f yourapp.exe 会在前台启动应用程序。

【讨论】:

  • 它说,“/f”是一个未知参数。我试过 start /MAX /WAIT "" "my.exe" ,但它的行为与 my.exe 相同。也许我需要一个帮助应用来解决这个问题?
  • @MillaWell:你可能会这样做。 Windows 根据最近的用户操作控制焦点,并且似乎没有向用户公开强制焦点的功能。但是,该功能向程序员公开,因此也许有人编写了一个专门用于聚焦任意窗口/程序的帮助应用程序。
【解决方案2】:

如果您想关注另一个程序,您可以这样做。

call focus WindowTitle
exit /b

:focus
setlocal EnableDelayedExpansion 

    if ["%~1"] equ [""] (
        echo Please give the window's title.
        exit /b
    )

    set pr=%~1
    set pr=!pr:"=!

    echo CreateObject("wscript.shell").appactivate "!pr!" > "%tmp%\focus.vbs"
    call "%tmp%\focus.vbs"
    del "%tmp%\focus.vbs"

goto :eof 
endlocal 

我正在使用 vbscript 来聚焦应用程序。 您需要传递窗口的 title而不是 窗口的 name (whatever.bat)。 为确保您获得正确的窗口焦点,您可以设置其标题。 示例:

title WindowTitle

【讨论】:

    【解决方案3】:

    Yaron 答案将起作用,但不希望创建临时文件来执行脚本,而是嵌入code in the batch directly。或者使用 jscript,它也是 windows 脚本主机的一部分,更容易嵌入到批处理中 这是一个focusOn.batenter link description here,它将根据标题的起始字符串将焦点设置在应用程序上(不会创建临时文件,这会使其更快一点):

    @if (@X)==(@Y) @end /* JScript comment
        @echo off
        cscript //E:JScript //nologo "%~f0"  %*
        exit /b %errorlevel%
    @if (@X)==(@Y) @end JScript comment */
    
    var ARGS=WScript.Arguments;
    
    if (ARGS.Length < 1 ) {
         WScript.Echo("No window title passed");
         WScript.Quit(1);
    }
    
    var sh=new ActiveXObject("WScript.Shell");
    if(!sh.AppActivate(ARGS.Item(0))){
        WScript.Echo("Cannot find an app with window name starting with: " + ARGS.Item(0));
    }
    

    示例用法:

    call focusOn.bat Untitled
    

    应该将焦点放在记事本上(它的标题仍然是“无标题 - 记事本”)

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 2018-09-27
      • 2014-05-14
      • 2013-08-26
      • 1970-01-01
      • 2017-04-09
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多