0

我正在使用 C# 开发浏览器助手对象(是的,我知道性能不会很好)。

我将处理程序附加到我的窗口的 HTMLWindowEvents2_Event.onload 事件。事件被正确引发(例如当刷新发生时)。我看到我的处理程序被调用,并且类型正确显示为“加载”事件。

事件处理程序有一个支持 IHTMLEventObj 的参数。我无法弄清楚如何从这个对象获取到引发 onload 事件的窗口或文档。这甚至可以从这个界面吗?传入的对象似乎有一个空的 srcElement 属性(可能是因为它是由窗口引发的事件,而不是文档中的某个元素)。

我是否需要将其转换为另一个类或接口才能获取文档?

我很乐意在 C# 或 C++ 方面提供任何帮助。

4

1 回答 1

1

该事件没有来源信息。

假设是,由于您将事件附加到 Window 对象的连接点,因此您知道哪个窗口将是事件源。当您挂钩事件时,您需要保存对窗口的引用,以防您需要事件源。

Class HTMLWindowEvents2Sink
{
    public HTMLWindowEvents2Sink(IHTMLWindow2 eventSource)
    {
        this.eventSource=eventSource;
    }
    IHTMLWindow2 eventSource;
    void AdviseEvent()
    {
        eventSource.load += this.HTMLWindow_onload; 
    }
    ....
}

通过使用委托事件处理模型,您还会在这里遇到性能损失和潜在的错误农场。

于 2013-01-22T00:08:47.370 回答