0

我以为 Shell.Explorer 是 AutoHotkey 中的 Webbrowser Control 的意思。

但是当我查看NavigateError事件参数的输出时,它与 MSDN 页面中描述的略有不同。

我在 MSDN 上找到了两个不同的页面NavigateError

由于第二个参数显示带有以下代码的 url,我猜 AutoHotkey 正在使用 DwebBrowserEvents2 接口,但 MSDN 页面说该方法接受 5 个参数,而 AutoHotkey 接收其中的 6 个。

new WBConttrol("file:///" A_ScriptDir "/nofile")
class WBConttrol {
    NavigateError(oParams*) {
        msgbox, 64, % Parameters, % "the number of passed parameters: " oParams.MaxIndex() "`n"
            . "1: " (IsObject(oParams.1) ? "object" : oParams.1) "`n"
            . "2: " (IsObject(oParams.2) ? "object" : oParams.2) "`n"       ; url
            . "3: " (IsObject(oParams.3) ? "object" : oParams.3) "`n"
            . "4: " (IsObject(oParams.4) ? "object" : oParams.4) "`n"
            . "5: " (IsObject(oParams.5) ? "object" : oParams.5) "`n"
            . "6: " (IsObject(oParams.6) ? "object" : oParams.6) "`n"
    }       
    __New(strURL="") {
        static WB
        Gui, New, Resize MaximizeBox
        Gui, Add, ActiveX, vWB w300 h200, Shell.Explorer  
        Gui, show, w300 h200
        ComObjConnect(WB, this)
        WB.Navigate(strURL)
    }   
}
4

1 回答 1

0

Shell.Explorer确实意味着WebBrowser控件。

额外的(第六个)参数在ComObjConnect()的文档中定义:

PrefixEventName([Params..., ComObject ])
...
ComObject是可选的,只有在定义了正确数量的 Params 时才能使用;它包含对传递给 ComObjConnect 的原始包装器对象的引用。

这个额外参数的原因是一些 COM 事件方法根本没有定义任何参数,因此不提供对引发事件的 COM 对象的引用。

于 2013-03-02T09:45:40.120 回答