首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在启动时运行时打开程序和登录的批处理文件失去焦点

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

Stack Overflow用户
提问于 2018-01-12 10:29:09
回答 1查看 526关注 0票数 0

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

如果我通过双击批处理文件来运行它,它就能完美地工作。

如果我把它放在启动时,它会工作1/5次。

如果我使用任务调度程序,并使其启动延迟1分钟,它就能工作2/5次,但它就是不可靠。

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

如果我运行批处理,它会工作,保持焦点并登录。如果它在启动时自动运行,它有时会失去对登录窗口的关注,因此sendkey无法工作。

我试过我所知道的一切,用谷歌搜索了其中的垃圾,然后坚持……寻找一位可以提供帮助的大师!

*注意,暗淡的对象外壳是我尝试添加的最后一个东西,它完全删除了;-)

代码语言:javascript
复制
@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文件...

EN

回答 1

Stack Overflow用户

发布于 2018-01-12 10:56:38

对于谁可以成功调用AppActivate使用的SetForegroundWindow接口函数,规则很简单。

您必须满足以下条件之一

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

  • 进程是前台进程。
  • 该进程由前台进程启动。
  • 进程接收到最后一个输入事件。
  • 没有前台进程。
  • 正在调试进程。
  • 前台进程不是现代应用程序或开始屏幕。
  • 前台未锁定(请参见LockSetForegroundWindow)。前台锁定超时已过期(请参见SystemParametersInfo).
  • No菜单中的
  • SPI_GETFOREGROUNDLOCKTIMEOUT。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48218732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档