Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 聚焦批处理启动的应用程序_Windows_Batch File_Windows Xp_Focus_Window - Fatal编程技术网

Windows 聚焦批处理启动的应用程序

Windows 聚焦批处理启动的应用程序,windows,batch-file,windows-xp,focus,window,Windows,Batch File,Windows Xp,Focus,Window,我正在从批处理脚本运行一系列应用程序,我希望确保打开的程序始终处于焦点。 我们需要确保这一点,因为这是一个实验性的设置,我们希望尽量减少这样的麻烦,例如必须将焦点切换到全屏窗口 当较早的程序退出时,当桌面暂时可见,用户单击桌面上的某个图标时,此问题已经很少发生。紧接着,序列中的下一个程序正在处理,新窗口不在焦点中 由于我隐藏了命令窗口,这个问题变得更加频繁 任何强制对序列中的下一个程序进行聚焦的方法,无论是批处理命令、操作系统的某些设置(我们使用的是Win XP)或助手应用程序,都会很有帮助。如

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

当较早的程序退出时,当桌面暂时可见,用户单击桌面上的某个图标时,此问题已经很少发生。紧接着,序列中的下一个程序正在处理,新窗口不在焦点中

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


任何强制对序列中的下一个程序进行聚焦的方法,无论是批处理命令、操作系统的某些设置(我们使用的是Win XP)或助手应用程序,都会很有帮助。

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

如果你想聚焦另一个程序,你可以这样做

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来集中应用程序。 您需要传递窗口的标题窗口的名称(whatever.bat)。 为了确保正确聚焦窗口,可以设置其标题。 例如:

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


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

它说“/f”是一个未知的参数。我尝试了
start/MAX/WAIT”““my.exe”
,但它的行为与
my.exe
相同。也许我需要一个帮助程序来解决这个问题?@MillaWell:你可能需要。Windows控件基于最近的用户操作进行聚焦,并且似乎没有向用户公开强制聚焦的功能。但是,该功能是向程序员公开的,因此可能有人编写了一个专门用于聚焦任意窗口/程序的帮助程序应用程序。您找到这个问题的答案了吗?最近我遇到了类似的问题。任何帮助都将不胜感激。谢谢
title WindowTitle
@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