使用Webbrowser的一點心得體會

2021-08-26 14:31:52 字數 2695 閱讀 8745

使用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...