• winform中webBrowser模拟网页操作中遇到的问题


    我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个winform内嵌webBrowser模拟网页上传文档的小工具,发现了许多问题,总结一下:

    先说明的是文档是用Excel指定格式制成的表格,数据是通过循环表格数据行上传的。

    需求是如果文档已经上传那么必须提示,但上传成功不必提示(因为循环上传的话会弹出很多提示框)。

    代码如下:
    添加引用 在扩展程序集中找到Microsoft.mshtml
    using mshtml;

    在窗体类上面贴标签: [ComVisible(true)]//访问 com 引用 microsoft html object library

    代码如下:

            private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
            {
                IHTMLWindow2 ihtmlWin = webBrowser1.Document.Window.DomWindow as IHTMLWindow2;
                StringBuilder strAlertBuilder = new StringBuilder();
                strAlertBuilder.Append("var _alert=window.alert;
    ");
                strAlertBuilder.Append("window.alert=function(s){
    ");
                strAlertBuilder.Append("window.external.alertMessage(s);}");
                ihtmlWin.execScript(strAlertBuilder.ToString(), "Javascript");
                if (!string.IsNullOrEmpty(alertmsg) && alertmsg.Contains("该报告编号已存在"))
                {
                    MessageBox.Show(alertmsg);
                    alertmsg = null;
                }
                else if (!string.IsNullOrEmpty(alertmsg) && alertmsg.Contains("提交成功"))
                {
                    alertmsg = null;
                }
            }
    
         public void alertMessage(string s)
            {
                alertmsg = s;
            }
    View Code

    当时在private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)事件中也试用了上述方法,效果不理想,因为很多弹窗不是网页加载完成才出来的。

    另外我是在win7系统编写的,开发环境下测试是没问题的,考虑到兼容性,使用的是C#2.0 .NET Framework,但是在许多的xp系统中发现webBrowser1_Navigated经常不能触发,经测试发现,很多xp系统是没有Microsoft.mshtml类的,win7上找不到目录,我从另外一台xp机拷贝下来,目录地址是C:Program FilesMicrosoft.NETPrimary Interop AssembliesMicrosoft.mshtml.dll,删除原有Microsoft.mshtml引用,将拷贝下来的类库添加进程序的Lib目录,并引用,引用属性设成 复制本地=True;特定版本=False,问题解决。

     

  • 相关阅读:
    2017.3.11[bzoj2440][中山市选2011]完全平方数
    2017.3.6[hihocoder#1415]后缀数组三·重复旋律3
    2017.3.4[hihocoder#1407]后缀数组二·重复旋律2
    [NOI2013]快餐店
    [HNOI2014]米特运输
    [HNOI2015]亚瑟王
    [JLOI2013]卡牌游戏
    [SDOI2010]地精部落
    [ZJOI2007]棋盘制作
    [AHOI2009]中国象棋
  • 原文地址:https://www.cnblogs.com/riddly/p/4151048.html
Copyright © 2020-2023  润新知