我正在使用SHDocVw.InternetExplorer
打开和控制内部网站上的自动化浏览器窗口。该软件通常按需要运行,但浏览器偶尔会关闭。我已经追踪了导致它发生的代码行,但我无法想出解决问题的方法。
我的原始代码如下所示:
private InternetExplorer window;
public HTMLDocument Document
{
get
{
try
{
return (HTMLDocument)window.Document;
}
catch (System.Runtime.InteropServices.COMException)
{
return null;
}
}
}
但是,只要window.Document
调用导致COMException
浏览器就会关闭。我尝试创建一个 isReady 布尔值,当我尝试离开当前页面时设置为 false,并在NavigateComplete2
触发事件时设置为 true,但如果浏览器询问“您确定要离开此页面,它不会触发“这意味着我无法与这些弹出窗口进行交互。
所以我尝试将代码更改为:
private InternetExplorer window;
public HTMLDocument Document
{
get
{
try
{
if (window.Busy) return null;
return (HTMLDocument)window.Document;
}
catch (System.Runtime.InteropServices.COMException)
{
return null;
}
}
}
虽然我遇到的崩溃次数较少,但当通话COMException
发生时,它仍会偶尔关闭浏览器。window.Busy
由于NavigateComplete2
导航被浏览器中断时不会触发并且InternetExplorer.Busy
还可能导致浏览器关闭我对如何解决没有想法。
编辑:我现在也试过了:window.ReadyState == tagREADYSTATE.READYSTATE_COMPLETE
但它会抛出同样COMException
的问题window.ReadyState
并使窗户崩溃。