2012-07-23 90 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