精华内容
下载资源
问答
  • 近期有工作任务,要获取一个目标网页的数据,然后写了下爬虫,使用了HttpWebRequest和WebClient发现都报429错误,后面采用WebBrowser伪装成浏览器访问,绕过了对方的反爬虫程序,另外目标网页还有一些比较棘手的反...
  • C# webBrowser 使用Chrome内容案例
  • C# WebBrowser 任意切换IE版本

    热门讨论 2016-05-07 00:16:08
    C# WebBrowser 适应你想要的IE版本核心 方便你在内嵌式C/S 更好的体验B/S
  • C# webbrowser控件设置代理IP访问网站

    千次下载 热门讨论 2014-10-15 16:57:49
    C#webbrowser控件设置代理IP访问网站
  • C#webbrowser控件设置代理IP访问网站 C#webbrowser控件设置代理IP访问网站 C#webbrowser控件设置代理IP访问网站 C#webbrowser控件设置代理IP访问网站
  • C# webbrowser捕获错误页面实例类

    热门讨论 2013-05-24 18:01:27
    C# webbrowser捕获错误页面实例类,捕获404 402 403 500 505 502 和断网-2146697211
  • C# WebBrowser 切换IE版本

    2017-11-08 11:16:37
    C# WebBrowser 任意切换IE版本,实惠WebBrowser的IE版本解决兼容性问题
  • C# WebBrowser页面内容缩放

    热门讨论 2012-08-09 15:32:46
    继承WebBrowoser控件,新增页面内容缩放功能。。。
  • C# webbrowser实现自动登录淘宝

    热门讨论 2013-11-03 16:58:58
    不含有第三方插件,用自带的Webbrowser实现; 代码简单易懂;
  • C# WebBrowser获取网页截图 调用WebBrowser.DrawImage
  • C#WebBrowser页面与Winform交互技巧
  • IEBrowser是对winfrom下webbrowser控件的封装,使得webbrowser的使用更加简单!该项目的地址:https://code.google.com/p/zsharedcode/wiki/IEBrowserDoc 使用方法和说明文档都有!
  • C# Webbrowser+Flash 点击

    2018-07-27 14:44:22
    实现了Webbrowser访问网页,可以点击网页中的Flash元素,例如网页游戏等等 实现了Webbrowser访问网页,可以点击网页中的Flash元素,例如网页游戏等等
  • c# webbrowser

    2012-05-20 08:07:16
    这个资源真不错
  • 在应用webbrowser对网页进行自动化操作时,不能有效地获取网页元素,往往是后续编程的拦路虎,原因是webbrowser提供的GetElementById()、GetElementFromPoint()、GetElementsByTagName()共3个方法,如果不仔细的研究...

    在应用webbrowser对网页进行自动化操作时,不能有效地获取网页元素,往往是后续编程的拦路虎,原因是webbrowser提供的GetElementById()、GetElementFromPoint()、GetElementsByTagName()共3个方法,如果不仔细的研究,使用起来还真的是有些障碍。为了解决这些问题,我只要硬着头皮,费劲心思地研究了一番。至于说有什么成果没有,那就只有本文的读者自己体会了。下面用图片给大家展示一下,同时,把代码亮出来分享,以对大家有些小小的帮助。

    网页元素要想看清楚些,用到的工具就是《开发人员工具》,看到了吧,浏览器都是自带的。

    点击工具左上方的鼠标状按钮可以精确定位网页元素。

      程序运行效果

    1. 加载网页

     2、用ID查找搜索框,搜索框为有ID的input标签,显示对话框内容为该标签的类型

     聚焦到搜索框并填写“传奇霸主”字符串

     用标签内文本(innertext)查找标签,对话框框显示标签类型为超链接a。

     

     随后自动点击“全部游戏”超链接

    1. 查找iframe窗口中的元素方法。遗憾的是这里并没有写成单独的方法,而是直接放在了响应按钮的事件方法中。这主要是因为这里基本上是手工完成,如果要想遍历层次结构的iframe大概需要写一个递归的方法,可惜咱么太业余,完不成这个艰巨的任务。

    首先是获得iframe窗口的句柄,然后再通过name属性查找输入框,最后写入内容

    4、这个方法首先是做了一个确定元素在web中相对坐标的方法,然后根据显示内容,手工填写元素相对坐标在要编译的程序变量里。然后通过密码框在iframe中的相对位置获得了句柄,并写入密码。

     

    下面是程序的源代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace wg5
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            //用id查找元素
            private HtmlElement get_elem_by_id(WebBrowser w, string id) {
                return w.Document.GetElementById(id);
            }
    
            //用name属性查找元素,这个没有用到,因为是在iframe中查找name属性,所以手工做了
            private HtmlElement get_elem_by_name(WebBrowser w, string name) {
                return w.Document.All[name];
            }
    
            //用元素标签中的内容查找元素
            private HtmlElement get_elem_by_innertext(WebBrowser w, string innertext) {
                HtmlElement e = null;
                StringBuilder s = new StringBuilder();
                foreach (HtmlElement t in w.Document.All) {
                    s.Clear();
                    s.Append(t.InnerText);
                    if (s.ToString().Equals(innertext)) {
                        e = t;
                        break;
                    }
                }
                return e;
            }
    
            //查找元素的方法还有用type属性查找,用元素集合(bytagname)查找等,以上都是参考网上大咖,但觉得效果一般,因此没有列出
    
            private void button1_Click(object sender, EventArgs e)
            {
                //加载url,网页显示在web容器中
                webBrowser1.Navigate(textBox1.Text);
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                //获取鼠标在web容器的中的相对坐标
                // 第一个为鼠标相对屏幕的坐标,第二个为本程序窗口的坐标(窗口移动不影响计算)
                //第三个常量为预估的窗口边框的横纵向长度,第四个是web相对于窗口内边的距离(窗口设计时,已经设置为0)
                int x = Form1.MousePosition.X - this.Location.X - 8 - webBrowser1.Location.X;
                int y = Form1.MousePosition.Y - this.Location.Y - 30 - webBrowser1.Location.Y;
                label3.Text = x.ToString();
                label5.Text = y.ToString();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                HtmlElement he = get_elem_by_id(webBrowser1, "search-input");
                if (he != null)
                {
                    MessageBox.Show(he.TagName);
                    he.Focus();
                    he.SetAttribute("value", "传奇霸主");
                }
                else {
                    MessageBox.Show("没有找到元素句柄!");
                }
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                HtmlElement he = get_elem_by_innertext(webBrowser1, "全部游戏");
                if (he != null)
                {
                    MessageBox.Show(he.TagName);
                    he.InvokeMember("click");
                }
                else
                {
                    MessageBox.Show("没有找到元素句柄!");
                }
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                HtmlElement he = null;
                label6.Text = webBrowser1.Document.Window.Frames.Count.ToString();
                HtmlWindow hw = webBrowser1.Document.Window.Frames[1];
                he = hw.Document.All["userName"];
                if (he != null)
                {
                    MessageBox.Show(he.TagName);
                    he.SetAttribute("value", "ideal");
                }
                else
                {
                    MessageBox.Show("没有找到元素句柄!");
                }
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                Point p = new Point();
                //这个数据是用鼠标手工测算的输入框(密码)相对于iframe窗口的距离,不用精确,鼠标落在元素上预估即可
                p.X = 77 - 18; 
                p.Y = 287 - 172;
                HtmlWindow hw = webBrowser1.Document.Window.Frames[1];
                HtmlElement he = hw.Document.GetElementFromPoint(p);
                if (he != null)
                {
                    MessageBox.Show(he.TagName);
                    he.SetAttribute("value", "123456");
                }
                else
                {
                    MessageBox.Show("没有找到元素句柄!");
                }
    
            }
        }
    }
    

    展开全文
  • 1,在项目中引用程序集拓展中的Microsoft.mshtml后,可以在公共控件中找到WebBrowser控件。 2,在窗体中加入三个按钮,然后添加WebBrowser控件,右键控件选属性,设置相应的属性。 3,设置WebBrowser控件的属性 ...
  • 问题:WPF通过 WebBrowser控件 加载高德地图 进入后 提示js加载失败 解决方案:在html头部 添加 <meta http-equiv="X-UA-Compatible" content="IE=edge">

    问题:WPF通过 WebBrowser控件 加载高德地图 进入后 提示js加载失败
    解决方案:在html头部 添加

    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
    展开全文
  • C# WebBrowser简易浏览器Demo

    千次阅读 2019-06-17 17:39:58
    同事项目想要使用html文件作为帮助文档,随推荐他用webbrowser,为了给他介绍该控件的简易用法,网上搜集整理一下,写了一个简单的Demo。 开发环境:WIN10+VS2013。 Demo主界面 菜单界面 源码Demo下载地址: ...

    同事项目想要使用html文件作为帮助文档,随推荐他用webbrowser,为了给他介绍该控件的简易用法,网上搜集整理一下,写了一个简单的Demo。

    开发环境:WIN10+VS2013。

    Demo主界面

    菜单界面

    源码Demo下载地址:

    链接:https://pan.baidu.com/s/1YozhVnk7pvMFPeIh4njHRQ 
    提取码:8vyc 

    参考:https://www.cnblogs.com/pcideas/articles/5065574.html

    展开全文
  • C# webBrowser控件调用echart

    千次阅读 2020-06-07 18:01:37
    C#调用Echart Echart对于数据展示相当优美,前端调用很方便,对于古老的Winform如何调用呢? 下载Echart Echart官网 下载后得到:echarts.js 和 echarts.min.js html中引入: <!-- 引入 ECharts 文件 --> &...

    C#调用Echart

    Echart对于数据展示相当优美,前端调用很方便,对于古老的Winform如何调用呢?

    下载Echart

    Echart官网

    下载后得到:echarts.js 和 echarts.min.js

    html中引入:

     <!-- 引入 ECharts 文件 -->
     <script src="echarts.min.js"></script>

    之后可以调用Echart使用,主要是对Echart的option设置。

    Echart Option主要参数说明

    参数说明
    title标题
    tooltip根据鼠标移动提示所在点的相关数据
    legend图形样式
    xAxis,yAxisx、y轴刻度、命名等显示参数的设定
    series显示的线条类型、点的数据等

    c# webBrowser调用

    拖出一个webbrower控件,并设定:

    //防止 WebBrowser 控件打开拖放到其上的文件。
      webBrowser1.AllowWebBrowserDrop = false
    //防止 WebBrowser 控件在用户右击它时显示其快捷菜单.
      webBrowser1.IsWebBrowserContextMenuEnabled = false;
    //以防止 WebBrowser 控件响应快捷键。
      webBrowser1.WebBrowserShortcutsEnabled = false;         
    //以防止 WebBrowser 控件显示脚本代码问题的错误信息。  
      webBrowser1.ScriptErrorsSuppressed = true;
    //传递参数到js
      webBrowser1.ObjectForScripting = this;
    

    调用使用Echart写好的Html:

      string path = System.AppDomain.CurrentDomain.BaseDirectory + "line-sections.html";  //html路径
      this.webBrowser1.Url = new Uri(path);  //传入路径到webBrowser
    

    c#传参到JS

    以下实例为根据webBrowser1大小修改Echart的大小:

                string size_str = "[" + webBrowser1.Height.ToString() + "," +      webBrowser1.Width.ToString() + "]";
                HtmlDocument htmlDocument = webBrowser1.Document;
                object[] objArray = new object[] { size_str };
                htmlDocument.InvokeScript("setPosition", objArray);
    
    

    JS中代码

     function setPosition(option) {
       var data_pri = eval(option);  //解析webBrowser1传入的数据
       var divMain = document.getElementById("main");  //获取html中id为main的echart控件
       divMain.style.height = data_pri[0] + "px";
       divMain.style.width = data_pri[1]+"px";
       window.onresize = myChart.resize(); //改变大小
      }
    

    总结

    使用echart进行数据的展示会给界面增色不少,可以尝试使用一下,调用也相对简单。

    图片展示

    在这里插入图片描述

    注意:webBrowser默认内核采用IE7,当显示效果不佳时可以更改内核,具体操作更改代码如下, 亲测有效

       static void SetWebBrowserFeatures(int ieVersion)
            {
            // don't change the registry if running in-proc inside Visual Studio  
                if (LicenseManager.UsageMode != LicenseUsageMode.Runtime)
                    return;
                //获取程序及名称  
                var appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
                //得到浏览器的模式的值  
                UInt32 ieMode = GeoEmulationModee(ieVersion);
                var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\";
                //设置浏览器对应用程序(appName)以什么模式(ieMode)运行  
                Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION",
                    appName, ieMode, RegistryValueKind.DWord);
                // enable the features which are "On" for the full Internet Explorer browser  
                //不晓得设置有什么用  
                Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION",
                    appName, 1, RegistryValueKind.DWord);
            }
    
         /// <summary>  
            /// 通过版本得到浏览器模式的值  
            /// </summary>  
            /// <param name="browserVersion"></param>  
            /// <returns></returns>  
            static UInt32 GeoEmulationModee(int browserVersion)
            {
                UInt32 mode = 11000; // Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 Standards mode.   
                switch (browserVersion)
                {
                    case 7:
                        mode = 7000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.   
                        break;
                    case 8:
                        mode = 8000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.   
                        break;
                    case 9:
                        mode = 9000; // Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.                      
                        break;
                    case 10:
                        mode = 10000; // Internet Explorer 10.  
                        break;
                    case 11:
                        mode = 11000; // Internet Explorer 11  
                        break;
                }
                return mode;
            }
      //调用
       SetWebBrowserFeatures(10);
    
    

    DEMO获取

    关注公众号发送echarts
    在这里插入图片描述

    展开全文
  • C# webbrowser使用

    2020-12-22 23:02:09
    C# webbrowser控件点击页面按钮  从工具箱中,将Webbrowser控件拖入Form窗口。  在Webbrowser控件的属性对话框中,将Url属性设置为对应的网址  然后在form窗体中双击webbrowser控件,在默认的webBrowser_...
  • C#模拟文件上传下载和数据下载源码分享给大家。
  • C# webbrowser控件执行js脚本源码

    热门讨论 2009-10-13 18:23:02
    找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵
  • c#webbrowser实现多个窗口独立不同的cookie
  • c#webbrowser开发经验

    2014-12-14 08:09:18
    c#webbrowser不支持中文输入怪现象的解决
  • [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisible(true)] ...第二点:的构造方法中设置this.webBrowser1.ObjectForScripting = this;...
  • C# webbrowser 和webrequest 共享Cookies 只需要在webrequest增加 req.Headers[“Cookie”] = this.webbrowser1.Document.Cookie; 即可
  • <p><img alt="" height="460" src="https://img-ask.csdnimg.cn/upload/1611762417960.png" width="528" /></p> <p><img alt="" height="143" src=... ...请问怎么让他填写第二个?    </p>
  • C#代码获取WebBrowser中的 cookie和userAgent 参数,方法和请求类
  • 本人写了个用C# 导出网页上的图片小项目 只要输入网址就可以导出网页上的图片了 有兴趣的可以看看。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,253
精华内容 3,301
关键字:

c#webbrowser

c# 订阅