Вызов метода С# BHO из javascript

Мне нужно вызвать метод С# BHO из javascript

Я следовал решению, данному в этом вопросе

Я получаю сообщение об ошибке:

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

Я не могу назначить:

dynamic window = browser.Document.parentWindow; 

поскольку parentWindow не определен, я должен привести к (mshtml.IHTMLDocument2) и (mshtml.IHTMLWindow2)

Есть ли у кого-нибудь полный рабочий пример, на который я мог бы сослаться, или любая помощь или альтернативные решения


person user1298511    schedule 23.07.2012    source источник


Ответы (1)


У меня та же проблема. И следующее исправление, кажется, работает в моем 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;
person Sampable Lam    schedule 16.01.2013
comment
Супер полезно, научил меня кое-чему и сэкономил мне час времени :) Если вы когда-нибудь вернетесь в SO - ответьте на этот комментарий, и я награжу вас за этот ответ. Краткое примечание - в .NET ‹ 4.5 это p.SetValue(windowEx, this,null); - person Benjamin Gruenbaum; 11.12.2013
comment
Еще одно примечание: объект _webBrowser должен быть экземпляром «IWebBrowser», а не «IWebBrowser2». - person Robert Petz; 17.10.2014