我正在为C#中的Internet Explorer编写浏览器助手对象(BHO)!我可以使用C++从C#BHO遍历DOM吗?
我想查找DOM中的文本节点,这需要我遍历整个DOM树,如果我想区分文本节点和其他类型的节点。这在C#中被认为是耗时的,但在C++(?)中应该几乎是瞬间的。
有没有办法在C++中进行遍历呢?我可以从C#调用DLL,使用DllImport?将HTMLDocument传递给我的外部公开的C++方法很容易吗?
还有其他想法吗?
干杯!
我正在为C#中的Internet Explorer编写浏览器助手对象(BHO)!我可以使用C++从C#BHO遍历DOM吗?
我想查找DOM中的文本节点,这需要我遍历整个DOM树,如果我想区分文本节点和其他类型的节点。这在C#中被认为是耗时的,但在C++(?)中应该几乎是瞬间的。
有没有办法在C++中进行遍历呢?我可以从C#调用DLL,使用DllImport?将HTMLDocument传递给我的外部公开的C++方法很容易吗?
还有其他想法吗?
干杯!
你从哪里得到“应该从”?大部分时间将花在实现DOM的代码上。这是用微软的C++编写的。
Marshal.GetIUnknownForObject()为您提供一个原始接口指针,您可以将其传递给本机代码。它需要QI指向IHtmlDocument2的指针并从那里取出它。
http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx和http://blogs.msdn.com/ b/ieinternals/archive/2009/08/21/agcore-addon-hangs-internet-explorer.aspx是我为什么不写BHO的托管代码的来源。我预计egrunin也是如此。 – 2011-06-06 13:32:47
CLR版本注入问题与perf无关。在.NET 4.0 btw中解决。 – 2011-06-07 00:16:49
只需在C++中编写整个BHO? – 2010-10-31 18:18:59
我有很多其他的逻辑已经写在C#.. – nelshh 2010-10-31 18:34:24