2012-07-23 62 views
3

我需要從JavaScript調用一個C#BHO方法調用C#BHO方法從JavaScript

我已按照this question

給我的錯誤解決方案:

'mshtml.HTMLWindow2Class' does not contain a definition for 'myExtension'. 

我不能分配:

dynamic window = browser.Document.parentWindow; 

作爲parentWindow是未定義的,我必須轉換爲(mshtml.IHT MLDocument2)和(mshtml.IHTMLWindow2)

有沒有人有一個完整的工作的例子,我可以指或任何幫助或替代性解決方案

回答

5

我有同樣的問題。而下面的補丁似乎在我的工作BHO:

dynamic window = _webBrowser.Document.parentWindow; 
var windowEx = (IExpando)window; 
PropertyInfo p = windowEx.AddProperty("myExtension"); 
p.SetValue(windowEx, this); 

代替:

dynamic window = _webBrowser.Document.parentWindow; 
var windowEx = (IExpando)window; 
PropertyInfo p = windowEx.AddProperty("myExtension"); 
window.myExtension = this; 
+0

超級有用,教給我的東西,救了我一小時的時間:)如果你曾經回到SO - 回覆這個評論,我會獎勵你這個答案的賞金。簡短說明 - 在.NET中<4.5它是'p.SetValue(windowEx,this,null);' – 2013-12-11 13:27:32

+0

另一個說明:_webBrowser對象需要是'IWebBrowser'的實例而不是'IWebBrowser2' – 2014-10-17 17:26:08