4

我正在用 C# 为 Internet Explorer 编写浏览器帮助程序对象 (BHO)!

我想在 DOM 中查找文本节点,如果我想区分文本节点和其他类型的节点,则需要遍历整个 DOM 树。据说这在 C# 中很耗时,但在 C++ 中应该几乎是瞬时的(?)。

有没有办法在 c++ 中进行遍历?我可以使用 DllImport 从 C# 调用的 dll 吗?将 HTMLDocument 传递给我的外部暴露的 c++ 方法是否容易?

还有其他想法吗?

干杯!

4

2 回答 2

3

你从哪里得到“应该”?大部分时间将花在实现 DOM 的代码上。这是微软用 C++ 编写的。

Marshal.GetIUnknownForObject() 为您提供可以传递给本机代码的原始接口指针。它需要 QI 指向 IHtmlDocument2 的指针并从那里获取它。

于 2010-10-31T19:56:16.940 回答
0
据说这在 C# 中很耗时,

这是错误的。

用户的大部分时间将花在等待 HTML 到达浏览器,并等待浏览器将其绘制到屏幕上。与此相比,遍历 DOM(以任何语言)是轻而易举的事。

于 2010-10-31T23:34:14.217 回答