Batch file WScript.Shell AppActivate不';我每次都不工作

Batch file WScript.Shell AppActivate不';我每次都不工作,batch-file,vbscript,wsh,Batch File,Vbscript,Wsh,我有一些脚本来帮助运行CMD中的程序。启动序列的第一个脚本在启动时运行。在这个过程中,我运行了一个VBScript,我试图用它关注CMD并使其全屏显示。然而,有时它工作,有时不工作,我没有改变任何事情,只是一次又一次地重新启动计算机。它并不总是关注cmd窗口,因此问题应该出在AppActivate方法上 以下是启动时运行的第一个脚本的代码: @echo关闭 主击球手 启动“主控”/B/W myApp.bat shutdown.exe/s/t 00 以下是myApp.bat的代码: @echo关

我有一些脚本来帮助运行CMD中的程序。启动序列的第一个脚本在启动时运行。在这个过程中,我运行了一个VBScript,我试图用它关注CMD并使其全屏显示。然而,有时它工作,有时不工作,我没有改变任何事情,只是一次又一次地重新启动计算机。它并不总是关注cmd窗口,因此问题应该出在
AppActivate
方法上

以下是启动时运行的第一个脚本的代码:

@echo关闭
主击球手
启动“主控”/B/W myApp.bat
shutdown.exe/s/t 00
以下是myApp.bat的代码:

@echo关闭
cscript fullscreen.vbs
光盘
CMD/C
出口
以下是
全屏.vbs
的代码:

Set ws=WScript.CreateObject(“WScript.Shell”)
ws.AppActivate“masterBat-myApp.bat”
ws.SendKeys“{F11}”
设置ws=Nothing

AppActivate
调用中的标题是我尝试全屏显示时cmd上的标题。我还尝试在脚本中添加一些
WScript.Sleep
调用,但似乎没有帮助。

WScript.Sleep会使情况变得更糟。你不想睡觉

有规则。您的程序必须遵守以下规则之一才能设置前景窗口

系统限制哪些进程可以设置前台窗口。仅当以下条件之一为真时,进程才能设置前景窗口:

•该流程是前台流程

•该流程由前台流程启动

•流程收到最后一个输入事件

•没有前台流程

•流程正在调试中

•前台流程不是现代应用程序或起点 屏幕

•前景未锁定(请参阅LockSetForegroundWindow)

•前台锁定超时已过期(请参阅 SPI_GETFOREGROUNDLOCKTIMEOUT(在系统参数sinfo中)

•没有激活的菜单

应用程序无法在用户关闭窗口时将窗口强制置于前台 正在使用另一个窗口。相反,Windows会在任务栏上闪烁 用于通知用户的窗口的按钮

这意味着,如果脚本没有用户界面(因为它不能是前台窗口),则从脚本开始设置另一个窗口时起,您有两秒钟的时间(FOREGROUNDLOCKTIMEOUT)。你做的第一件事就是一个消息框(直到其他事情发生)。Wscript还有一个超时的消息框-
WshShell.Popup

这是为了防止当用户感到厌烦并且正在另一个程序中工作时,程序启动缓慢,从而窃取焦点

预防性评论通常人们都想就此与我争论。向微软投诉,而不是向我投诉。你不能与规则争论。你只要遵守他们就行了