C# Webbrowser 常用方法及多线程调用
来源:互联网 发布:win10usb端口添加失败 编辑:程序博客网 时间:2024/05/21 07:14
设置控件的值
/// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagName"></param> /// <param name="id"></param> /// <param name="value"></param> private void SetTxt(string tagName, string name, string id, string value) { HtmlDocument docx = <strong><font color="#FF0000">webBrowser</font></strong>1.Document; foreach (HtmlElement item in docx.GetElementsByTagName(tagName)) { if (item.GetAttribute("name") != null && item.GetAttribute("name") == name || item.Id == id) { try { item.Focus(); item.SetAttribute("value", value); } catch { item.SetAttribute("value", value); } } } }
返回指定WebBrowser中图片<IMG></IMG>中的图内容 需要引用MsHtml
/// <summary>/// 返回指定WebBrowser中图片<IMG></IMG>中的图内容/// </summary>/// <param name="WebCtl">WebBrowser控件</param>/// <param name="ImgeTag">IMG元素</param>/// <returns>IMG对象</returns>private Image GetWebImage(WebBrowser WebCtl, HtmlElement ImgeTag){ HTMLDocument doc = (HTMLDocument)WebCtl.Document.DomDocument; HTMLBody body = (HTMLBody)doc.body; IHTMLControlRange rang = (IHTMLControlRange)body.createControlRange(); IHTMLControlElement Img = (IHTMLControlElement)ImgeTag.DomElement; //图片地址 Image oldImage = Clipboard.GetImage(); rang.add(Img); rang.execCommand("Copy", false, null); //拷贝到内存 Image numImage = Clipboard.GetImage(); try { Clipboard.SetImage(oldImage); } catch { } return numImage;}
一个通用webbrowser类,封装常用方法
public partial class htmlElement { //根据Name获取元素 public HtmlElement GetElement_Name(WebBrowser wb, string Name) { HtmlElement e = wb.Document.All[Name]; return e; } //根据Id获取元素 public HtmlElement GetElement_Id(WebBrowser wb, string id) { HtmlElement e = wb.Document.GetElementById(id); return e; } //根据Index获取元素 public HtmlElement GetElement_Index(WebBrowser wb, int index) { HtmlElement e = wb.Document.All[index]; return e; } // 据Type获取元 ,在没有NAME和ID的情况下使用 public HtmlElement GetElement_Type(WebBrowser wb, string type) { HtmlElement e = null; HtmlElementCollection elements = wb.Document.GetElementsByTagName("input"); foreach (HtmlElement element in elements) { if (element.GetAttribute("type") == type) { e = element; } } return e; } // 据Type获取元 ,在没有NAME和ID的情况下使用,并指定是同类type的第 个,GetElement_Type()升级版 public HtmlElement GetElement_Type_No(WebBrowser wb, string type, int i) { int j = 1; HtmlElement e = null; HtmlElementCollection elements = wb.Document.GetElementsByTagName("input"); foreach (HtmlElement element in elements) { if (element.GetAttribute("type") == type) { if (j == i) { e = element; } j++; } } return e; } //获取form表单名name,返回表单 public HtmlElement GetElement_Form(WebBrowser wb, string form_name) { HtmlElement e = wb.Document.Forms[form_name]; return e; } //设置元素value属性的值 public void Write_value(HtmlElement e, string value) { e.SetAttribute("value", value); } //执行元素的方法,如:click,submit(需Form表单名)等 public void Btn_click(HtmlElement e, string s) { e.InvokeMember(s); } }
多线程执行webbrowser的方法:
webbrowser 只支持STA模式
private void ThreadWebBrowser(string url){ Thread tread = new Thread(new ParameterizedThreadStart(BeginCatch)); tread.SetApartmentState(ApartmentState.STA);//注意创建的线程单元 tread.Start(url);} private void BeginCatch(object obj){ string url = obj.ToString(); WebBrowser wb = new WebBrowser(); wb.ScriptErrorsSuppressed = true; //在这里Navigate一个空白页面 必须 wb.Navigate("about:blank"); string htmlcode = "";//这里赋值 HTML字符串数据 wb.Document.Write(htmlcode); //执行其他操作}
0 0
- C# Webbrowser 常用方法及多线程调用
- WebBrowser控件中JS调用C#方法
- c#的webbrowser常用属性方法总结
- C#常用多线程方法
- C#调用WebBrowser NewWindow
- C# 窗体 webbrowser 窗体调用javascript方法 实例
- C# 窗体中 webbrowser 中 javascript 调用窗体方法 实例
- C# winForm webBrowser页面中js调用winForm类方法
- WebBrowser控件的方法及IE7不能调用的解决方法
- c#中的webbrowser 多线程 【转载】
- c#多线程使用webbrowser控件
- C#直接调用webBrowser JavaScript
- C#及wpf WebBrowser截图
- c#多线程调用有参数的方法
- c#多线程调用方法之学习笔记
- delphi webbrowser 常用方法示例
- delphi webbrowser 常用方法示例
- WebBrowser常用属性方法介绍
- EncodingHelper
- Stream与byte[]与Image与string
- 红豆电信JS
- Android工程的编译过程
- C#中的WebBrowser控件的使用
- C# Webbrowser 常用方法及多线程调用
- 配置本地的虚拟主机
- webBrowser1
- 设备树学习之(十二)LCD驱动
- 腾讯 auth_token
- QQ传输协议分析
- TCP进制转换
- 字节、字、bit、byte的关系
- c#常用方法