2016-11-30 103 views
0

在我目前正在处理的脚本中,我构建了一个动态项目列表,并且需要获取用户对要载入的项目的反馈。
目前使用InputBox方法,它完美地工作,但经常隐藏在用户屏幕上的其他窗口后面。VBS InputBox隐藏在其他窗口后面

我正在寻找一种方式将其带到前,类似的效果vbSystemModalMSGBOX

我发现的大多数答案(在这个网站和其他人)处理VB.Net和命令/子程序,不适用于VBS像我正在使用。我发现VBS上的其他类似问题没有得到任何具体的答案或关闭使用不同的脚本语言的建议...

我打算在未来版本的脚本中移动到HTA。这应该为我提供很多这种问题的替代方案。但现在,我没有时间完成剧本的重建,需要我的工作。

在此先感谢您通过输入框焦点或任何其他创意替代方式将我指向正确的方向,您的组合智慧可以让人联想起!

亲切的问候!

+0

程序有2秒钟可以放置一个窗口。如果不这样做,它就失去了将自己变成前景窗口的能力。这是为了阻止程序窃取焦点。 – 2016-11-30 07:39:01

+0

有9条规则(其中最可能是2秒)。你必须遇到其中之一来设置前景窗口。他们在这里详细 - https://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx。 – 2016-11-30 07:44:53

+0

@Noodles:我不知道我明白你想告诉我什么,以及对我的VBS脚本意味着什么。我正在寻找一种方法将焦点明确地提供给InputBox弹出窗口。你是说在输入框必须在脚本运行时间的前两秒内产生才能获得焦点? – Cry

回答

0

我会用AutoItX.dll,你可以从这里丘陵地:https://www.autoitscript.com/site/autoit/downloads/

然后使用WinSetOnTop:

Set oAutoIt = WScript.CreateObject("AutoItX3.Control") 
oAutoIt.WinSetOnTop "MyInputBoxName", "", 1 

或将焦点设置只使用WinActivate:

Set oAutoIt = WScript.CreateObject("AutoItX3.Control") 
oAutoIt.WinActivate "MyInputBoxName", "" 

顺便说一句:几年前我开始使用VBS,然后添加了AutoItX控件,并在HTA中写了一些东西。但最后我改成了完整的AutoIt应用程序。

+0

设置窗口的Z顺序。它不设置前景窗口。前景窗口具有键盘焦点。 – 2016-11-30 20:22:35

+0

“那......”什么?尝试一下! – ReFran

+0

您正在设置ontop属性。这不会设置前景窗口。键盘进入前台窗口。 – 2016-11-30 22:20:54