1

我正在使用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并使窗户崩溃。

4

0 回答 0