我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个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;\n");
strAlertBuilder.Append("window.alert=function(s){\n");
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;
}

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

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

 

winform中webBrowser模拟网页操作中遇到的问题的更多相关文章

  1. C# Winform中WebBrowser给网页中的input控件赋值/设置值

    订阅WebBrowser的DocumentCompleted事件,在里面写入 private void browser_DocumentCompleted(object sender, WebBrow ...

  2. WinForm中WebBrowser的使用

    最近由于工作需要,研究了下Winform的WebBrowser控件,在这里给大家分享下. 1.WebBrowser导航 WebBrowser在进行导航的时候需要用到Navigate(string ur ...

  3. 记WinForm中WebBrowser相关的俩个问题

    问题一:如何不让WebBrowser中弹出“安全警告” 当链接https网址时,IE会自动弹出上图中的窗口. 关闭窗口的具体思路如下: 使用WebBrowser加载中/加载完毕后触发的事件处理程序,在 ...

  4. C# Winform 中webBrowser显示html内容时禁止错误提示的方法

    在winform中有一个控件可以显示html的内容,该控件就是webbrowser,设置它的DocumenText属性为HTML的内容即可. 在使用WebBrowser做UI的时候,我们有时不希望里面 ...

  5. winform中WebBrowser控件执行脚本

    在实际应用中我们可能需要WebBrowser控件主动执行我们需要的脚本,执行脚本现在有两种方法. 1.WebBrowser控件加载脚本,简单方便,适用于简短的脚本,无法执行复杂操作. webBrows ...

  6. Delphi中WebBrowser拦截网页Alert对话框消息(转)

    interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, O ...

  7. 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页

    通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页 rem 强制WebBrowser控件使用指定IE版本显示应用的网页 IF EXIST %windir%\Sys ...

  8. C#在WinForm中使用WebKit传递js对象实现与网页交互的方法

    这篇文章主要介绍了C#在WinForm中使用WebKit传递js对象实现与网页交互的方法,涉及针对WebBroswer控件及WebKit控件的相关使用技巧,需要的朋友可以参考下 本文实例讲述了C#在W ...

  9. Winform中修改WebBrowser控件User-Agent的方法(已经测试成功)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

随机推荐

  1. Promise原理详解

    参考文章:深入理解 Promise.[翻译]Promises/A+规范 从入门Promise的正确姿势中我们已经了解到Promise的基本用法.那么现在给你一个需求:根据Promise的用法和Prom ...

  2. IOS折线图二

    上周把项目的折线图给做了下,今天想着把它完善完善,自己设置了不同的数据源来测试,哈哈,还真遇到问题了, 就是给图表设置折点数为0时,视图显示的还是原来的,由于数据为空,应该将其设置为空,所以想着怎么把 ...

  3. Fanvas是一个把swf转为html5 canvas动画的系统

      https://github.com/Tencent/Fanvas   使用方法:     代码: <!DOCTYPE html> <html> <head> ...

  4. mklink /d 目录符号链接

    刚装好Windows Live Writer,却发现日志保存路径是默认的改都没法改,在C:\Users\用户名\Documents\My Weblog Posts下. 找了下,竟然可以用cmd的mkl ...

  5. 泛型委托Func<T>

    Func<T>——委托只有泛型版本的,接受参数个数可以是若干个,也可以没有,但是必须是有返回值的方法. Func<TResult>——这个表示没有参数,只有返回值TResult ...

  6. ASP.NET HttpWebRequest和HttpWebResponse

    HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性. 模拟艺龙旅游网登录 想模拟登录,首先整理一下流程 1.通过360浏览器 ...

  7. [javaSE] 数据结构(栈)

    栈(stack)是一种线性存储结构,有以下特点: 1.栈中数据是按照先进后出的方式进出栈的 2.向栈中添加删除元素时,只能从栈顶进行操作 使用数组实现栈 定义一个类ArrayStack 实现入栈方法p ...

  8. 三:Bootstrap-js插件

    模式框: <button class="btn btn-default btn-lg" data-toggle="modal" data-target=& ...

  9. 撩课-Web大前端每天5道面试题-Day14

    1. 请写出至少5个html5新增的标签,并说明其语义和应用场景? section:定义文档中的一个章节; nav:定义只包含导航链接的章节; header:定义页面或章节的头部; 它经常包含 log ...

  10. 【SSH网上商城项目实战04】EasyUI菜单的实现

    转自:https://blog.csdn.net/eson_15/article/details/51297705 上一节我们使用EasyUI搭建了后台页面的框架,这一节我们主要使用EasyUI技术简 ...