Batch file WScript.Shell AppActivate不';我每次都不工作
我有一些脚本来帮助运行CMD中的程序。启动序列的第一个脚本在启动时运行。在这个过程中,我运行了一个VBScript,我试图用它关注CMD并使其全屏显示。然而,有时它工作,有时不工作,我没有改变任何事情,只是一次又一次地重新启动计算机。它并不总是关注cmd窗口,因此问题应该出在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关
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
这是为了防止当用户感到厌烦并且正在另一个程序中工作时,程序启动缓慢,从而窃取焦点
预防性评论通常人们都想就此与我争论。向微软投诉,而不是向我投诉。你不能与规则争论。你只要遵守他们就行了