Разрабатываю BHO для IE в C#. Проблема, в которой я застрял, заключается в том, что IE вылетает, говоря, что
«Inte rnet Explorer перестал работать»
затем
«Проблема с веб-страницей привела к тому, что Inte rnet Explorer закрыл и снова открыл вкладку»
Такое поведение наблюдается в Windows 10 Pro 2016 и IE 11. Однако тот же BHO отлично работает с другими версиями Windows, например Windows 8.1 - IE 11, Windows 10 2019,2020 - IE 11.
Обычно это происходит при переходе по ссылке в уже открытой вкладке или при обновлении страницы.
Я проверил журналы, это происходит при выставлении методов для события от 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)
{
}
}
Полный код доступен здесь в вопросе.