我正在使用autoit来运行Internet Explorer。我希望IE在控制台窗口中记录它访问的所有urls。当我编译此脚本时,我将其编译为在后台的控制台窗口中运行。
#include <IE.au3>
ShellExecute("iexplore.exe", "about:blank")
WinWait("Blank Page")
$oIE = _IEAttach("about:blank", "url")
_IELoadWait($oIE)
_IENavigate($oIE, "http://www.dell.com")
$oEvt = ObjEvent($oIE, "_IEEvent_")
While 1
Sleep(5000)
WEnd
; BeforeNavigate2 method definition
Func _IEEvent_BeforeNavigate2($IEpDisp, $IEURL, $IEFlags, $IETargetFrameName, $IEPostData, $IEHeaders, $IECancel)
ConsoleWrite("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--BeforeNavigate2 fired--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " & @CRLF & _
"$IEpDisp = " & $IEpDisp() & " - " & ObjName($IEpDisp) & @CRLF & _ ; e.g. default property and name for the object
"$IEURL = " & $IEURL & @CRLF & _
"$IEFlags = " & $IEFlags & @CRLF & _
"$IETargetFrameName = " & $IETargetFrameName & @CRLF & _
"$IEPostData = " & $IEPostData & @CRLF & _
"$IEHeaders = " & $IEHeaders & @CRLF & _
"$IECancel = " & $IECancel & @CRLF & _
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " & @CRLF & @CRLF)
EndFunc ;==>_IEEvent_BeforeNavigate2我的问题是,当我使用IE的这个实例冲浪时,控制台中什么也没有显示。我做错了什么?
最终解决方案
正如Manadar建议的那样,我更改了以下代码;此代码在控制台上抛出一个错误:--> IE.au3 V2.4-0 Warning from function _IEAttach, $_IEStatus_NoMatch,但它纯粹是装饰性的。
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <IE.au3>
$oIE = _IECreate("about:blank", 1)
$oEvt = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents2")
_IELoadWait($oIE)
_IENavigate($oIE, "http://www.cisco.com")
; Keep the console window open and poll with Sleep()
While 1
Sleep(5)
WEnd
; BeforeNavigate2 method definition
Func _IEEvent_BeforeNavigate2($IEpDisp, $IEURL, $IEFlags, $IETargetFrameName, $IEPostData, $IEHeaders, $IECancel)
$message = "!!!!!!!!!!!!!!!!!!!!!--BeforeNavigate2 fired--!!!!!!!!!!!!!!!!!!!!!!!! " & @CRLF & _
"$IEpDisp = " & $IEpDisp() & " - " & ObjName($IEpDisp) & @CRLF & _
"$IEURL = " & $IEURL & @CRLF & _
"$IEFlags = " & $IEFlags & @CRLF & _
"$IETargetFrameName = " & $IETargetFrameName & @CRLF & _
"$IEPostData = " & $IEPostData & @CRLF & _
"$IEHeaders = " & $IEHeaders & @CRLF & _
"$IECancel = " & $IECancel & @CRLF & _
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" & @CRLF & @CRLF
ConsoleWrite($message)
EndFunc ;==>_IEEvent_BeforeNavigate2发布于 2012-01-09 19:13:44
您的代码中的函数顺序错误。在_IENavigate之前应该先调用ObjEvent!否则,当您导航时,事件尚未附加。最重要的是,ObjEvent函数需要"DWebBrowserEvents2“作为第三个参数。
您的代码将如下所示:
#include <IE.au3>
ShellExecute("iexplore.exe", "about:blank")
WinWait("Blank Page")
$oIE = _IEAttach("about:blank", "url")
$oEvt = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents2")
_IELoadWait($oIE)
_IENavigate($oIE, "http://www.dell.com")别忘了自己添加一些时间,睡眠和功能恢复。
您还应该:
ShellExecute("iexplore.exe", "about:blank")
WinWait("Blank Page")
$oIE = _IEAttach("about:blank", "url")执行以下操作:
$oIE = _IECreate("about:blank", 1)https://stackoverflow.com/questions/8778972
复制相似问题