using System; 
using System.Windows.Forms; 
using mshtml; 
namespace WebBrowserTest 
{ 
public partial class Form1 : Form 
{ 
public Form1() 
{ 
InitializeComponent(); 
} 
private void button1_Click(object sender, EventArgs e) 
{ 
this.webBrowser1.Navigate(this.textBox1.Text); 
} 
private void button2_Click(object sender, EventArgs e) 
{ 
var doc = this.webBrowser1.Document; 
var frames = doc.Window.Frames; 
String testValue = doc.GetElementById("search").GetAttribute("value"); 
IHTMLDocument3 baiduDoc = CorssDomainHelper.GetDocumentFromWindow(frames[0].DomWindow as IHTMLWindow2); 
baiduDoc.getElementById("kw").setAttribute("value", testValue); 
baiduDoc.getElementById("su").click(); 
} 
} 
}
最后运行一下程序可以看到我们可以正常获取到百度上的元素了。

补充一下路过秋天说的问题:
其实关于这些接口其实我也没有很深入的研究过,不过网上倒是能搜到很多相关资料介绍这些接口的不同,我这里给一个链接:
然后关于我上面的代码为什么要使用IHMLDocument3,而不是其它两个接口,因为IHMLDocument3这个接口里面定义了我需要的getElementById这个方法。
通过查看MSDN,你可以找到你需要的属性或者方法,然后直接在代码里面转换为你需要的类型使用就可以了,它们之间都是可以互相转化的。比如上面我用完了getElementById方法,我需要查看网页的title,那么可以将我上面的baiduDoc变量强制转为IHMLDocument2,然后就可以直接使用它的title属性了。
参考链接:
(v=vs.85).aspx
(v=VS.85).aspx
您可能感兴趣的文章:
