Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248607
  • 博文数量: 65
  • 博客积分: 2758
  • 博客等级: 少校
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-25 00:23
文章分类

全部博文(65)

文章存档

2011年(4)

2010年(1)

2009年(60)

我的朋友

分类: 嵌入式

2011-02-27 19:09:08

我想在webBrowser控件的网页打开后,可以获得如图所示的超链接文本(把这个文本赋予c#里的一个变量temp) 图1: 网页:http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=%C1%D6%D0%C4%C8%E7&in=12214&cl=2&cm=1&sc=0&lm=-1&pn=28&rn=1&di=1533942216&ln=2000&fr= 图2: 网页:http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=jay+%D6%DC%BD%DC%C2%D7%D7%EE%D0%C2%CD%BC%C6%AC&in=25292&cl=2&cm=1&sc=0&lm=-1&pn=16&rn=1&di=1278940441&ln=2000&fr= 高手过来看看,一般的方法行不同。

问题补充:

第一个网页链接给错了。修改之:http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=%C1%D6%D0%C4%C8%E7&in=12214&cl=2&cm=1&sc=0&lm=-1&pn=28&rn=1&di=1533942216&ln=2000&fr=#pn30

最佳答案

添加COM reference, SHDocVw 及 mshtml 将webBrower1.ActiveXInstance属性 传给 SHDocvw.WebBrowser接口 使用SHDocvw.WebBrowser接口下的ProgressChange事件 在Progress.Equals(ProgressMax)时, 取 ((webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.HTMLDocumentClass).body.innerText即可 代码类似如此:
  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             SHDocVw.WebBrowser wb = webBrowser1.ActiveXInstance as SHDocVw.WebBrowser;
  4.             wb.ProgressChange += new DWebBrowserEvents2_ProgressChangeEventHandler(wb_ProgressChange);
  5.             object flags = new object(), header = new object(), postdata = new object(), framename = new object();
  6.             webBrowser1.Navigate(@"http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&word=%C1%D6%D0%C4%C8%E7&in=31076&cl=2&cm=1&sc=0&lm=-1&pn=0&rn=1&di=503232564&ln=2000&fr=");
  7.         }

  8.         void wb_ProgressChange(int Progress, int ProgressMax)
  9.         {
  10.             if (Progress.Equals(ProgressMax))
  11.                 MessageBox.Show(((webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).Document as mshtml.HTMLDocumentClass).body.innerText);
  12.         }
触发事件你可以再看一下,可能还有更合适的。 但是Progress.Equals(ProgressMax)是最基本的 保证全部加载完毕。 还有个方法你可以自己尝试下,我觉得可以用BHO,但是不知道winform里的webbrowser对象会不会自动加载BHO,用BHO跟上边过程差不多,只是要编成COM
阅读(3831) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~