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

时间:2018-01-12 02:29:09

标签: batch-file

尝试让批处理文件一致地运行但有问题。

如果我通过双击运行批处理文件,它可以正常工作。

如果我把它放在启动状态,它可以工作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文件......

1 个答案:

答案 0 :(得分:0)

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

您必须满足以下条件之一

  

系统限制哪些进程可以设置前景窗口。一个   只有在以下情况之一时,进程才能设置前台窗口   条件是真的:

     
      
  • 该过程是前台进程。

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

  •   
  • 该过程收到了最后一个输入事件。

  •   
  • 没有前台进程。

  •   
  • 正在调试该过程。

  •   
  • 前台进程不是现代应用程序或开始屏幕。

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

  •   
  • 前台锁定超时已过期(请参阅SystemParametersInfo中的SPI_GETFOREGROUNDLOCKTIMEOUT)。

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

  •   

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