用于打开程序和登录的批处理文件在启动时运行时失去焦点



试图让批处理文件一致运行,但遇到问题。

如果我通过双击它来运行批处理文件,它会完美运行。

如果我把它放在启动中,它可以工作 1/5 次。

如果我使用任务计划程序并使其成为启动延迟 1 分钟的 starup taks,它可以在 5 次中工作 1 次,但它只是不可靠。

这个问题是: 我需要打开一个特定的程序,然后在登录时程序提供的弹出窗口中输入用户名和密码。

如果我运行批处理,它可以工作,保持专注并登录。 如果它在启动时自行运行,它有时会失去对登录窗口的关注,因此发送键不起作用。

我尝试了我所知道的一切,用谷歌搜索了一下狗屎并卡住了......请寻找一位可以提供帮助的大师

!!请注意,暗淡的对象外壳是我尝试添加的最后一件事,它可以完美删除;-)

@if (@CodeSection == @Batch) @then
@echo off
set "username=UNAME"
set "password=PWORD"
start /MAX /B "" C:"Program Files (x86)MYPROGRAMTHEPROGRAM"PROGF.exe
timeout /t 30 /nobreak >nul
Dim ObjShell :Set ObjShell = CreateObject("Wscript.Shell")
ObjShell.AppActivate("PROGF.exe")
CScript //nologo //E:JScript "%~F0" "%username%{tab}%password%{enter}"
goto :EOF
@end
WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0));

已经尝试过它作为.bat和.cmd文件...

规则很简单,谁可以成功调用AppActivate使用的 API 函数SetForegroundWindow

您必须满足以下条件之一

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

  • 流程是前台流程。

  • 该过程由前台过程启动。

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

  • 没有前台进程。

  • 正在调试该过程。

  • 前台进程不是新式应用程序或"开始"屏幕。

  • 前台未锁定(请参见 LockSetForegroundWindow)。

  • 前台锁定超时已过期(请参阅系统参数信息中的SPI_GETFOREGROUNDLOCKTIMEOUT)。

  • 没有菜单处于活动状态。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx

相关内容

最新更新