我目前正致力于使用AUTOIT下载文件的脚本。该脚本的工作原理是它将打开IE,附加到窗口,输入URL字符串以下载文件,然后在出现IE9下载管理器提示时发送键击以下载文件。
我遇到的问题是,有时当连接速度很慢时,IE9下载提示需要很长时间才能显示,键击会错过目标。使用SLEEP是不可能的,因为显示文件下载需要不同的时间,如果例如我在1秒内显示提示时脚本SLEEP持续6秒,则会不必要地减慢脚本速度。
PS。我无法使用INET get函数,因为传递的URL是报表服务器,报表在那里生成,文件在浏览器中呈现给我。
我正在查看controlGetHandle函数,如果有人可以提供有关如何浏览IE下载管理器提示的任何想法,我将非常感激。这是在出现下载提示时激活脚本。
先谢谢你们。
答案 0 :(得分:0)
我猜WinWait是可以帮助你的功能。它会暂停脚本,直到指定的窗口存在,并且作为安全防护,还有一个超时参数,以便您可以使用:
WinWait("download", "" , 10000 )
这将等待标题中有“下载”的窗口,直到10秒过去。
答案 1 :(得分:0)
这是
#include <IE.au3>
Opt("WinTitleMatchMode", 2)
Local $oIE = _IE_Example("form")
$oInputFile = _IEGetObjByName($oIE, "fileExample")
$FileToUpload = "c:\myfile.txt"
_IEAction($oInputFile, "focus")
$hIE = _IEPropertyGet($oIE, "hwnd")
ControlSend($hIE, "", "Internet Explorer_Server1", " ")
WinWait("Choose File", "", 30)
Sleep(1000)
WinActivate("Choose File")
ControlSend("Choose File", "", "[CLASS:Edit; INSTANCE:1]", $FileToUpload, 1)
Sleep(1000)
WinActivate("Choose File")
ControlSend("Choose File", "", "", "{ENTER}")