首页 > 解决方案 > SHDocVw 仅适用于 Win 10 x64 版本

问题描述

我有以下用 C# WinForms 编写的代码:

...    
SHDocVw.WebBrowser_V1 axBrowser = (SHDocVw.WebBrowser_V1)webBrowser1.ActiveXInstance;
    
if (axBrowser != null)
{
     axBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, axBrowser, new object[] { true });
}
    
axBrowser.NewWindow += axBrowser_NewWindow;
...
if (!webBrowser1.IsDisposed && !webBrowser1.Url.Equals("about:blank")) //System.NullReferenceException: Object reference not set to an instance of an object.
{
     webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
}

在 x86 平台上运行时出现空引用错误。在 x64 上运行时,一切正常。我想问题出在 Interop.SHDocVw 上。

编辑:在 if 条件下, webBrowser1.Url 部分变为空。所以我试过这样:(它没有给我任何错误,但控制是空的)

private void contextMenuStrip1_Click(object sender, EventArgs e)
{
    try
    {
        if (!webBrowser1.IsDisposed && webBrowser1.Url !=null && !webBrowser1.Url.Equals("about:blank"))
        {
             webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
        }
        else if (webBrowser1.Url == null)
        {
            MessageBox.Show("webBrowser1.Url ");
            webBrowser1.AllowWebBrowserDrop = false;//MS bug?: {"Error HRESULT E_FAIL has been returned from a call to a COM component."}   System.Runtime.InteropServices.COMException
            webBrowser1.ScrollBarsEnabled = false;//false--MS bug?: {"Error HRESULT E_FAIL has been returned from a call to a COM component."}  System.Runtime.InteropServices.COMException
            webBrowser1.ScriptErrorsSuppressed = false;

            WinInetInterop.RestoreSystemProxy();

            SHDocVw.WebBrowser_V1 axBrowser = (SHDocVw.WebBrowser_V1)webBrowser1.ActiveXInstance;

            if (axBrowser != null)
            {
                axBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, axBrowser, new object[] { true });
            }

            axBrowser.NewWindow += axBrowser_NewWindow;

            webBrowser1.Url = new System.Uri("https://evidentacimitir.com/ProfitshareAds.html", System.UriKind.Absolute);
            webBrowser1.WebBrowserShortcutsEnabled = false;
            webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
            webBrowser1.Navigated += new System.Windows.Forms.WebBrowserNavigatedEventHandler(this.webBrowser1_Navigated);
        }
    }
    catch (Exception ex)
    {
        ExceptionReportHelper.Exception(ex);
    }
}

如何解决此问题以使其在 x86 平台上也能正常工作?

谢谢

标签: c#visual-studiowinformsshdocvwshdocvw.internetexplorer

解决方案


推荐阅读