• webbrowser访问网站禁止弹窗


    用webbrowser访问网站时,如果网站有alert,window.open之类的JS,会在桌面上出现弹出框,并且必须点掉才会完成访问.
    我在网上找了屏蔽这些弹出框的方法,就是添加事件Navigated,在里面重新定义这些函数.像下面这样


    WebBrowser wbWebBrowser = new WebBrowser();
    wbWebBrowser.Navigated += new WebBrowserNavigatedEventHandler(wbWebBrowser_Navigated);
    ......

    private void wbWebBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e) //屏蔽alert等弹框弹窗的情况
    {
    WebBrowser wbWebBrowser = (WebBrowser)sender;
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("function alert(){return;}");
    sb.AppendLine("function confirm(){return;}");
    sb.AppendLine("function showModalDialog(){return;}");
    sb.AppendLine("function window.open(){return;}");
    sb.AppendLine("function prompt(){return;}");
    string strJS = sb.ToString();
    IHTMLWindow2 win = (IHTMLWindow2)wbWebBrowser.Document.Window.DomWindow;
    win.execScript(strJS, "Javascript");
    win = null;
    }

     我在自己电脑上试的时候发现确实有效果,不加的话访问有弹出框的网站就会弹出内容.加了以后就不会弹出,可以正常访问完成了.

    但把生成的EXE文件放到别人电脑上,他们运行之后都依然会弹出提示框.并且他们装的系统,和配置,跟我自己电脑上的好像也都差不多.

    目前我测试发现的规律是,似乎安装了visual studio的电脑就会像我自己电脑一样不弹窗,没安装的就会弹,即使他们装了.net framework也是会弹窗的.

    请问这是什么原因呢

    我知道原因了,原来是安装了.NET SDK的机器上自带Microsoft.mshtml.dll.
    只安装了.NET framework的机器上没有,需要把
    C:Program FilesMicrosoft.NETPrimary Interop AssembliesMicrosoft.mshtml.dll
    放到和EXE文件同一目录下,才可以

  • 相关阅读:
    C# 让程序自动以管理员身份运行
    [转]SAP算号器 license key Developer Access Key 完美解决方案
    【原创】项目性能优化全纪录(一) 存储过程优化
    treeview的遍历
    .NET求职笔试题目(续)
    SQL server 数据同步 Merge 的一个小bug
    use Stored procedure return a tabel(存储过程返回table)
    四种sql server 数据库分页的测试
    十五个世界最顶级的技术类博客网站
    层的拖动与隐藏
  • 原文地址:https://www.cnblogs.com/mybabyyh/p/4532100.html
Copyright © 2020-2023  润新知