Prevent WebBrowser autocomplete passwords popup [duplicate]

痴心易碎 提交于 2019-12-14 02:23:26

问题


I have a WebBrowser in WPF and I keep getting this popup after successful login to a website

I've tried to suppress this using both hide script and an alert blocker without success.

Is there a way to suppress this popup in code only?

Code:

        <WebBrowser x:Name="wpfBrowser"
                    Height="450"
                    MinHeight="450"
                    Width="825"
                    MinWidth="825"
                    view:WebBrowserBehaviors.BindableSource="{Binding LoginViewModel.URL}" 
                    Navigated="wpfBrowser_Navigated"
                    Loaded="wpfBrowser_Loaded"
                    LoadCompleted="wpfBrowser_LoadCompleted" KeyUp="wpfBrowser_KeyUp">                
        </WebBrowser>


    public void HideScriptErrors(WebBrowser wb, bool hide)
    {
        var fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
        if (fiComWebBrowser == null) return;
        var objComWebBrowser = fiComWebBrowser.GetValue(wb);
        if (objComWebBrowser == null)
        {
            wb.Loaded += (o, s) => HideScriptErrors(wb, hide); //In case we are to early
            return;
        }
        objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { hide });
    }

    private void InjectAlertBlocker()
    {
        mshtml.HTMLDocument document = (mshtml.HTMLDocument)wpfBrowser.Document;
        mshtml.IHTMLElement head = document.getElementsByTagName("head").Cast<mshtml.IHTMLElement>().First();
        var script = (mshtml.IHTMLScriptElement)document.createElement("script");
        string alertBlocker = "window.alert = function () { }";
        ((mshtml.HTMLHeadElement)head).appendChild((mshtml.IHTMLDOMNode)script);
    }

    private void wpfBrowser_Loaded(object sender, RoutedEventArgs e)
    {
        HideScriptErrors(wpfBrowser, true);
    }

    private void wpfBrowser_Navigated(object sender, NavigationEventArgs e)
    {
        try
        {
            InjectAlertBlocker();
        }
        catch (Exception ex)
        {
            NLog.Log(LogLevel.Error, ex, "Logs");
        }
    }

回答1:


This popup is NOT from JavaScript... It's from IE.

You can try this, if you have access to the registry from your app:

https://support.microsoft.com/en-us/help/229940/how-to-disable-internet-explorer-password-caching

BUT: This is also canceling this Popup for the normal IE Browser outside your app!!!



来源:https://stackoverflow.com/questions/47820006/prevent-webbrowser-autocomplete-passwords-popup

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!