使用webbrowser的一點心得體會
2023年06月29日
自從用上vs2008後,發現webbrowser控制項實在強大不少(.net 2003中不帶),方便、實際、強大,有好多小工具就用這個寫的,慢慢也有點體會了,總結一下,與網友們共享吧。
[b]1、如何獲得「開啟網頁出錯」資訊
[/b] 在documentcompleted事件中,判斷document.url.absoluteuri中的"res://":標誌即可(以前總用e.url,怪不得總擷取不到)
if (webbrowser1.document.url.absoluteuri.indexof("res://") > -1) //出錯處理
[b]2、如何使用ihtmldocument2等mshtml功能
[/b] vs2005中沒有完全封裝mshtml中的功能,留了個domdocument介面。直接引用microsoft html object library類庫後,就可以操作ihtmldocument2等複雜的功能了。 如:ihtmldocument2 doc2 = (ihtmldocument2)webbrowser1.document.domdocument;
[b]3、如何提取網頁中的,尤其是驗證碼圖等以流方式返回的[/b]
很多**一些是動態生成了,是從伺服器計算4個**,然後相對應一組序號,再以流方式傳送到本地,然後gdi+繪畫出來。不管是以什麼方式,到了客戶端,都是完整的。用webbrowser的好處就在這裡,只要管住最終結果就ok了。以下是得到網頁上驗證碼的**:
///
/// 返回指定webbrowser中中的圖內容
///
/// webbrowser控制項
/// img元素
/// img物件
**:private image getwebimage(webbrowser webctl, htmlelement imgetag)
vb.net2008**為:
補充一下:
1、引用microsoft html object library類庫
2、新增乙個webbrowser控制項、乙個picturebox控制項
開始**:
imports mshtml
private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
'呵呵,qq空間的登入頁面就是這麼地長
end sub
private sub webbrowser1_documentcompleted(byval sender as system.object, byval e as system.windows.forms.webbrowserdocumentcompletedeventargs) handles webbrowser1.documentcompleted
』webbrowser1載入完後觸發事件
picturebox1.image = getwebimage(webbrowser1)
end sub
private function getwebimage(byval webctl as webbrowser) as image
dim doc as htmldocument = directcast(webctl.document.domdocument, htmldocument)
dim body as htmlbody = directcast(doc.body, htmlbody)
dim rang as ihtmlcontrolrange = directcast(body.createcontrolrange, ihtmlcontrolrange)
dim imgetag as htmlelement
for each imgetag in webbrowser1.document.all
if imgetag.id = "imgverify" then
exit for
end if
next
dim img as ihtmlcontrolelement = directcast(imgetag.domelement, ihtmlcontrolelement)
dim old as object = clipboard.getdataobject
rang.add(img)
rang.execcommand("copy", false, nothing)
dim numimage as image = clipboard.getimage
if (old is nothing) = false then
clipboard.setdataobject(old)
end if
return numimage
end function
[b]4、如何遮蔽掉alert()型別的彈出視窗
[/b] 首先申明這不是技術,只是一種處理的技巧。網上查了很多資料,對於網頁中彈出alert()視窗不好遮蔽(尤其是writer出來的)。我的方法是做兩個exe,乙個為主程式.exe,乙個run.exe。webbrowser控制項放在run.exe中,在主程式中通過process呼叫run.exe,而用在執行完任務後,將run.exe殺掉(kill),這時alert視窗會自動關閉。我用這種技巧做了好了個投票機,可以安靜的執行,還能迴避session處理等問題,也不會在桌面上留下一堆視窗。
使用Webbrowser的一點心得體會
原文 使用webbrowser的一點心得體會 自從用上vs2005後,發現多了個webbrowser控制項 net 2003中不帶 為圖方便吧,有好多小工具就用這個寫的,慢慢也有點體會了,總結一下,與們共享吧。1 如何獲得 開啟網頁出錯 資訊 在documentcompleted事件中,判斷docu...
使用Webbrowser的一點心得體會
自從用上vs2005後,發現多了個webbrowser控制項 net 2003中不帶 為圖方便吧,有好多小工具就用這個寫的,慢慢也有點體會了,總結一下,與們共享吧。1 如何獲得 開啟網頁出錯 資訊 在documentcompleted事件中,判斷document.url.absoluteuri中的 ...
MyEclipse Tomcat的一點使用經驗
我用的是myeclipse6.5 1 編碼 在project裡可以設定整個工程的編碼,而對於每個檔案的編碼則是在開啟檔案後,在edit下拉列表的最下方有乙個setencoding,那裡可以設定。2 關閉自動更新 在window preferences myeclipse的community esse...