首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Internet Explorer:使用AutoIt将URL记录到控制台

Internet Explorer:使用AutoIt将URL记录到控制台
EN

Stack Overflow用户
提问于 2012-01-09 00:00:07
回答 1查看 2K关注 0票数 2

我正在使用autoit来运行Internet Explorer。我希望IE在控制台窗口中记录它访问的所有urls。当我编译此脚本时,我将其编译为在后台的控制台窗口中运行。

代码语言:javascript
复制
#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,但它纯粹是装饰性的。

代码语言:javascript
复制
#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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-09 19:13:44

您的代码中的函数顺序错误。在_IENavigate之前应该先调用ObjEvent!否则,当您导航时,事件尚未附加。最重要的是,ObjEvent函数需要"DWebBrowserEvents2“作为第三个参数。

您的代码将如下所示:

代码语言:javascript
复制
#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")

别忘了自己添加一些时间,睡眠和功能恢复。

您还应该:

代码语言:javascript
复制
ShellExecute("iexplore.exe", "about:blank")
WinWait("Blank Page")
$oIE = _IEAttach("about:blank", "url")

执行以下操作:

代码语言:javascript
复制
$oIE = _IECreate("about:blank", 1)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8778972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档