3

I need to call a C# BHO method from javascript

I have followed the solution given in this question

I get the error:

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

I cannot assign:

dynamic window = browser.Document.parentWindow; 

as parentWindow is undefined, I have to cast to (mshtml.IHTMLDocument2) and (mshtml.IHTMLWindow2)

Does anyone have a full working example I could refer to or any help or alternative solutions

Community
  • 1
  • 1

1 Answers1

6

I've the same problem. And the following fix seems work in my BHO:

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

instead of:

dynamic window = _webBrowser.Document.parentWindow;
var windowEx = (IExpando)window;
PropertyInfo p = windowEx.AddProperty("myExtension");
window.myExtension = this;
Sampable Lam
  • 76
  • 1
  • 2
  • Super useful, taught me something and saved me an hour of time :) If you're ever back in SO - reply to this comment and I'll award you a bounty for this answer. Short note - in .NET <4.5 it's `p.SetValue(windowEx, this,null);` – Benjamin Gruenbaum Dec 11 '13 at 13:27
  • On another note: the _webBrowser object needs to be an instance of 'IWebBrowser' not 'IWebBrowser2' – Robert Petz Oct 17 '14 at 17:26