如何找到传递给Shell.Explorer的事件方法的参数?

时间:2012-11-17 06:11:40

标签: activex webbrowser-control autohotkey

我认为Shell.Explorer意味着AutoHotkey中的Webbrowser控件。

但是当我查看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)
    }   
}

1 个答案:

答案 0 :(得分:0)

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

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

  

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

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