我正在爲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