尝试让批处理文件一致地运行但有问题。
如果我通过双击运行批处理文件,它可以正常工作。
如果我把它放在启动状态,它可以工作5次。
如果我使用任务调度程序并且在启动时延迟1分钟使其成为一个明星,那么它可以工作2次,但它不可靠。
这个问题是: 我需要打开一个特定的程序,然后输入用户名和密码到程序在登录时提供的弹出窗口。
如果我运行批处理它可以工作,保持焦点并登录。如果它在启动时自行运行,它有时会失去对登录窗口的关注,因此sendkeys不起作用。
我已经尝试了所有我知道的东西,用谷歌搜索了它并且卡住了...找一个可以帮助的大师!请
****请注意,昏暗的对象shell是我尝试添加的最后一件事,它完美地删除了; - )
@if (@CodeSection == @Batch) @then
@echo off
set "username=UNAME"
set "password=PWORD"
start /MAX /B "" C:\"Program Files (x86)\MYPROGRAM\THEPROGRAM"\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文件......
答案 0 :(得分:0)
关于谁可以成功调用SetForegroundWindow
API函数AppActivate
使用的规则很简单。
您必须满足以下条件之一
系统限制哪些进程可以设置前景窗口。一个 只有在以下情况之一时,进程才能设置前台窗口 条件是真的:
该过程是前台进程。
该过程由前台进程启动。
该过程收到了最后一个输入事件。
没有前台进程。
正在调试该过程。
前台进程不是现代应用程序或开始屏幕。
前台未锁定(请参阅LockSetForegroundWindow)。
前台锁定超时已过期(请参阅SystemParametersInfo中的SPI_GETFOREGROUNDLOCKTIMEOUT)。
没有菜单处于活动状态。
https://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx