WScript.Shell SendKeys无法在Windows 8.1 x64

时间:2016-12-12 10:55:29

标签: windows vbscript wsh

我遇到以下VBScript问题。

我试图将击键发送到网络浏览器窗口,但没有任何反应。

以下脚本中的前两行正常,但使用SendKeys命令的第三行没有做任何事情。

Set objShell = CreateObject("WScript.Shell")
objShell.Run "http://someurl.com", 1
objShell.SendKeys "Some Text"

我试图在两台不同的Win 8.1计算机上运行该脚本。在Win 8.1 Pro上它可以工作,但在Win 8.1 not-Pro上它不会起作用。 Windows中的某个设置是否需要设置或其他任何可以帮助我的设置?

更新

尝试了新代码(添加了睡眠并运行浏览器显式),但仍然没有运气

Set ObjShell = WScript.CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\Internet Explorer\iexplore.exe""http://someurl.com/"
WScript.Sleep 5000
objShell.SendKeys "Some Text"

1 个答案:

答案 0 :(得分:0)

虽然它不是一个很好的编程技术,但在 objShell.Run 行之后放置一个 Sleep 命令(如下所示),为操作系统提供一些时间来&# 34;赶上"并实际运行URL,激活浏览器窗口以使其成为焦点(您必须在浏览器窗口中记下标题并准确使用该标题),因为我看到浏览器窗口在某些情况下失去焦点然后文本不能用管道进入它,最后它发送文本。您的里程可能会有所不同,您甚至可能需要增加睡眠时间才能获得成功。在某些情况下,我必须睡30秒。特别是在任何原因,由于网络延迟,操作系统缓慢等原因,网页渲染速度很慢。我还没有在Windows 8.1上遇到过这个问题,因为我还没有在该平台上尝试过这个问题。我不认为这与操作系统版本有任何关系;我在其他Windows操作系统版本上遇到了与 SendKeys 相同的问题,我必须使用 Sleep 这样的功能。 SendKeys 方法有已知的限制,因为它在浏览器之外运行,您必须等待某些操作完成才能让它执行更多操作。

Set ObjShell = WScript.CreateObject("WScript.Shell")
objShell.Run "http://someurl.com", 1
WScript.Sleep 20000
objShell.appactivate("Welcome to SOMEURL.COM! - Mozilla Firefox")
WScript.Sleep 700
objShell.SendKeys "Some Text"

另外,您可以尝试将上面的第2行替换为以下内容,看看您是否有更好的运气。在下面的示例中,Firefox是默认的Web浏览器。相应地将路径更改为您选择的浏览器:

objShell.Run("""C:\Program Files\Mozilla Firefox\firefox.exe""http://someurl.com")