所以我正在开发一些可以自动化Internet Explorer的VBScript:打开它,导航和下载文件.我有它的工作,但是有一个问题在于我需要向它发送击键. SendKeys正在为我工作,但问题是,当我使用AppActivate将重点放在IE上时,它并不总是有效.基本上它可以归结为这两种情况:
案例1:双击我的.vbs文件,自动化过程顺利进行.窗口被激活,一切正常.
案例2:双击我的.vbs文件,其他一些应用程序会打开一个窃取焦点的窗口(或手动点击其他内容来更改焦点).当稍后执行AppActivate行时,IE永远不会集中注意力,键击显然不会通过.
那么你们对AppActivate没有设定焦点的原因有任何想法吗?
这是我用来激活IE窗口的代码:
Do While Not wshell.AppActivate("Active Agents - Internet Explorer")
WScript.Sleep(1)
Loop
最佳答案 此脚本示例运行IE并使用AppActivate焦点发送密钥
'fuction to set the application active and then send keys
Function mySendKey(sKey,sTime)
for i=0 to 600 ' this loop will continue about 30 sec if this not enough increase this number
'get the window title of the IE
title= sh.Exec("cmd.exe /c tasklist /v /fi ""imagename EQ iexplore*"" /FO LIST | FIND /i ""window title:"" ").stdOut.readline
title= Mid (title,15,len(title)-14)
sh.Popup title,1
Sh.AppActivate title
Rtn=Sh.AppActivate(title) ' window title of application
If Rtn = True Then 'if the window active then execute sned keys
Sh.SendKeys sKey
Exit For
End If
wscript.sleep 10
Next
WScript.Sleep sTime*1000
End Function
'hide the cmd window from popup
If StrComp(right(WScript.FullName,11),"wscript.exe",1) = 0 Then
WScript.Quit CreateObject("WScript.Shell").Run("cscript.exe //nologo """ & WScript.ScriptFullName & """", 0, False)
End If
'open internet explorer
Set Sh = CreateObject("WScript.Shell")
Sh.Exec "C:\Program Files\Internet Explorer\iexplore.exe"
WScript.Sleep 7000
'call mySendKey function to send keys to IE
Call mySendKey("(% )(x)",1) 'max the windows of IE
Call mySendKey("({F6})(www.yahoo.com) (~)",10) 'browse to yahoo and wait 10 sec to load
Call mySendKey("({F6})(www.msn.com) (~)",10) 'browse to msn and wait 10 sec to load
Call mySendKey("(% )(C)",1) 'close the IE