Я разрабатываю BHO для IE на С#. Проблема, в которой я застрял, заключается в том, что IE падает, говоря, что
"Internet Explorer has stopped working"
тогда
"A problem with the webpage caused Internet Explorer to close and open the tab again"
Такое поведение наблюдается в Windows 10 (IE11) при использовании в качестве виртуальной машины. Однако тот же BHO отлично работает на физических машинах, а также в Windows 8.1 (IE11) как на физической, так и на виртуальной машине.
Обычно это происходит при переходе по ссылке в уже открытой вкладке или при обновлении страницы.
Я проверил по логам, это происходит при выставлении методов для JS через событие BeforeScriptExecute в этой строке p.SetValue(windowEx, this);
private void S2_BeforeScriptExecute(object pDispWindow)
{
try
{
HTMLDocument doc = _webBrowser.Document as HTMLDocument;
if (doc != null)
{
IHTMLWindow2 tmpWindow = doc.parentWindow;
dynamic window = tmpWindow;
IExpando windowEx = (IExpando)window;
PropertyInfo p = windowEx.AddProperty("myExtension");
p.SetValue(windowEx, this);
}
}
catch (Exception ex)
{
}
}
Полный код опубликован здесь в вопросе.