C#使用Webbrowser
[轉貼]原文出處: http://www.cnblogs.com/yuanbao/archive/2007/09/12/890730.html
自從用上VS2005後,發現多了個WebBrowser控件(.net 2003中不帶),為圖方便吧,有好多小工具就用這個寫的,慢慢也有點體會了,總結一下,與網友們共享吧。
1、如何獲得“打開網頁出錯”信息
在DocumentCompleted事件中,判斷Document.Url.AbsoluteUri中的"res://":標誌即可(以前總用e.Url,怪不得總截取不到)
if (webBrowser1.Document.Url.AbsoluteUri.IndexOf("res://") > -1) //出錯處理
{
webBrowser1.Navigate(e.Url);
return;
}
2、如何使用IHTMLDocument2等MSHTML功能
VS2005中沒有完全封裝MSHTML中的功能,留了個DomDocument接口。直接引用Microsoft HTML Object Library類庫後,就可以操作IHTMLDocument2等複雜的功能了。如:IHTMLDocument2 doc2 = (IHTMLDocument2)webBrowser1.Document.DomDocument;
3、如何提取網頁中的圖片,尤其是驗證碼圖等以流方式返回的圖片
很多網站一些圖片是動態生成了,是從服務器以流方式一點點發過來再組裝成圖片的。不管是以什麼方式,到了客戶端,都是完整的。用WebBrowser的好處就在這裡,只要管住最終結果就OK了。以下是得到網頁上驗證碼的代碼:
/// <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(); //從Clipboard中取圖
Clipboard.SetImage(oldImage); //還原
return numImage;
}
4、如何屏蔽掉Alert()類型的彈出窗口
首先申明這不是技術,只是一種處理的技巧。網上查了很多資料,對於網頁中彈出Alert()窗口不好屏蔽(尤其是Writer出來的)。我的方法是做兩個EXE,一個為主程序.exe,一個Run.exe。 WebBrowser控件放在RUN.exe中,在主程序中通過Process調用RUN.exe,而用在執行完任務後,將RUN.exe殺掉(Kill),這時Alert窗口會自動關閉。我用這種技巧做了好了個投票機,可以安靜的運行,還能迴避Session處理等問題,也不會在桌面上留下一堆窗口。
2 意見:
張貼留言很多字詞似乎都是大陸用語?
IHTMLControlRange、IHTMLControlElement、execCommand、
CaptchaCracked
請問一下這類東西用法如何使用、為啥需要使用這些東西??
MSDN為啥找不到??如果要找相關資源用法要去哪找???
張貼留言