天天看點

vb webbrowser控件詳解

vb+webbrowser控件詳解

1、獲得浏覽器資訊

private sub command1_click()

webbrowser1.navigate ""

end sub

private sub command2_click()

dim owindow

dim onav

set owindow = webbrowser1.document.parentwindow

set onav = owindow.navigator

debug.print onav.useragent

set owindow = nothing

set onav = nothing

end sub

點選command1浏覽網頁,點選command2在立即視窗中輸出浏覽器資訊。

2、彈出webbrowser消息視窗

dim owindow

set owindow = webbrowser1.document.parentwindow

owindow.confirm "abcd"

vb調用webbrowser技巧集2

向webbrowser中寫入html内容的幾種方法

首先在form_load中加入

webbrowser1.navigate "about:blank"

確定webbrowser1可用

方法1:

dim s as string

dim stream as istream

    s = "hello world

"

webbrowser1.document.write s

方法2:

dim o

set o = webbrowser1.document.selection.createrange

debug.print o

if (not o is nothing) then

o.pastehtml "哈哈"

set o = nothing

end if

方法3:

\'插入文本框

dim o

set o = webbrowser1.document.selection.createrange

o.execcommand "inserttextarea" false "xxx"

vb調用webbrowser技巧集3

1、頁面滾動:

private sub command2_click()

webbrowser1.document.parentwindow.scrollby 0 30

end sub

private sub form_load()

webbrowser1.navigate ""

end sub

點選command2就可以使目前頁面向下滾動30像素

2、判斷頁面是否可以前進後退

private sub command1_click()

webbrowser1.goforward

end sub

private sub command2_click()

webbrowser1.goback

end sub

private sub form_load()

webbrowser1.navigate ""

end sub

private sub webbrowser1_commandstatechange(byval command as long byval enable as

boolean)

if (command = csc_navigateback) then

command2.enabled = enable

end if

if (command = csc_navigateforward) then

command1.enabled = enable

end if

end sub

vb調用webbrowser技巧集4

1、如何使網頁不出現滾動條:

private sub mnuscroll1_click()

@#注意:必須在網頁完全顯示之後才可以運作

webbrowser1.document.body.scroll = "no" @#不顯示滾動條的辦法

end sub

private sub mnuscroll2_click()

@#注意:必須在網頁完全顯示之後才可以運作

webbrowser1.document.body.scroll = "auto" @#顯示滾動條的辦法

end sub

2、如何獲得網頁中被選中部分的html:

private sub command1_click()

dim objselection

dim objtxtrange

set objselection = webbrowser1.document.selection

if not (objselection is nothing) then

set objtxtrange = objselection.createrange

if not (objtxtrange is nothing) then

debug.print objtxtrange.htmltext

set objtxtrange = nothing

end if

set objselection = nothing

end if

end sub

private sub form_load()

webbrowser1.navigate ""

end sub

navigate 方 法 的 語 法 格 式 為:

webbrowser1.navigate     url

[flags][targetframename][postdata][headers]

webbrowser 控件支援的主要方法有:

goback———回退到上一屏。

goforward———進入到下一屏。

gohome———回家。即回到首頁。

stop———停止導航。

refresh———重新整理。

navigate———導航。

webbrowser控件所響應的事件:

 beforenavigate事件 ———在開始導航前發生。一般在此擷取完整的url字元串。

 webbrowser控件 最主要的參數:

 url ———獲得導航用的标準url字元串。例如:它能将””自動翻譯為””

使用webbrowser的navigator或者navigator2方法打開一個asp文檔并且傳遞

參數進去,但是asp文檔無法獲得參數,請教是什麼原因?

vb源碼:

private sub cmdsubmit_click()

dim strurl as string, strformdata as string

dim strdata as string

strurl = trim$(txturl.text)

strformdata = "name=" & trim$(txtname.text) &

"&password=" &trim$(txtpassword.text)

call wbtest.navigate2(strurl 64 "_blank" strformdata

"hello")

end sub

asp源碼:

*********************************************************************

option explicit

private sub command1_click()

dim szvalue as string

webbrowser1.document.body.innerhtml = "method=post action=http://位址/xxx.php>"

webbrowser1.document.forms("post").submit

end sub

private sub form_load()

webbrowser1.navigate2 "about:blank"

end sub

********************************************************************

請問:在webbrwoser控件裡提供的navigate或者navigate2方法中提供了傳遞資料的參數,調用方式為:

    webbrowser1.navigate2(url[flags]

[targetframename][postdata][headers])

其中postdata參數就是一個送出參數字元串,例如"name=aaa&password=123",

但問題是為什麼這個方法并不是有效的,伺服器端不能取得資料?

如果這個方法是有效的話就不需要用一段html代碼模拟這種調用了。

下面代碼能檢測出程式post出去的消息

private sub webbrowser1_beforenavigate2(byval pdisp as object,url as variant,flags as variant,targetframename as variant,postdata as variant,headers as

variant,cancel as boolean)

msgbox postdata

end sub

webbrowser的8個方法和13個屬性 

WebBrowser 參數原型:

    WebBrowser1.Navigate [Flags,][TargetFrameName,][PostData,][Headers]

WebBrowser的8個方法和13個屬性,以及它們的功能:
方法 說明
GoBack 相當于IE的“後退”按鈕,使你在目前曆史清單中後退一項。
GoForward 相當于IE的“前進”按鈕,使你在目前曆史清單中前進一項。
GoHome 相當于IE的“首頁”按鈕,連接配接使用者預設的首頁。
GoSearch 相當于IE的“搜尋”按鈕,連接配接使用者預設的搜尋頁面。
Navigate 連接配接到指定的URL。
Refresh 重新整理目前頁面。
Refresh2

同上,隻是可以指定重新整理級别,所指定的重新整理級别的值來自RefreshConstants枚舉表,該表定義在ExDisp.h中,可以指定的不同值如下: 

REFRESH_NORMAL 執行簡單的重新整理,不将HTTP pragma: no-cache頭發送給伺服器。

REFRESH_IFEXPIRED 隻有在網頁過期後才進行簡單的重新整理。

REFRESH_CONTINUE 僅作内部使用。在MSDN裡寫着DO NOT USE! 請勿使用。

REFRESH_COMPLETELY 将包含pragma: no-cache頭的請求發送到伺服器。

Stop 相當于IE的“停止”按鈕,停止目前頁面及其内容的載入。
屬性 說明
Application 如果該對象有效,則傳回掌管WebBrowser控件的應用程式實作的自動化對象(IDispatch)。如果在宿主對象中自動化對象無效,這個程式将傳回WebBrowser控件的自動化對象。
Parent 傳回WebBrowser控件的父自動化對象,通常是一個容器,例如是宿主或IE視窗。
Container 傳回WebBrowser控件容器的自動化對象。通常該值與Parent屬性傳回的值相同。
Document 為活動的文檔傳回自動化對象。如果HTML目前正被顯示在WebBrowser中,則Document屬性提供對DHTML Object Model的通路途徑。
TopLevelContainer 傳回一個Boolean值,表明IE是否是WebBrowser控件頂層容器,是就傳回true。
Type 傳回已被WebBrowser控件加載的對象的類型。例如:如果加載.doc檔案,就會傳回Microsoft Word Document。
Left 傳回或設定WebBrowser控件視窗的内部左邊與容器視窗左邊的距離。
Top 傳回或設定WebBrowser控件視窗的内部左邊與容器視窗頂邊的距離。
Width 傳回或設定WebBrowser視窗的寬度,以像素為機關。
Height 傳回或設定WebBrowser視窗的高度,以像素為機關。
LocationName 傳回一個字元串,該字元串包含着WebBrowser目前顯示的資源的名稱,如果資源是網頁就是網頁的标題;如果是檔案或檔案夾,就是檔案或檔案夾的名稱。
LocationURL 傳回WebBrowser目前正在顯示的資源的URL。
Busy 傳回一個Boolean值,說明WebBrowser目前是否正在加載URL,如果傳回true就可以使用stop方法來撤銷正在執行的通路操作。
WebBrowser 的事件:

Private Events

(私有活動) 

Description (描述)
BeforeNavigate2 導航發生前激發,重新整理時不激發。
CommandStateChange 當指令的激活狀态改變時激發。它表明何時激活或關閉Back和Forward菜單項或按鈕。
DocumentComplete 當整個文檔完成是激發,重新整理頁面不激發。
DownloadBegin 當某項下載下傳操作已經開始後激發,重新整理也可激發此事件。
DownloadComplete 當某項下載下傳操作已經完成後激發,重新整理也可激發此事件。
NavigateComplete2 導航完成後激發,重新整理時不激發。
NewWindow2 在建立新視窗以前激發。
OnFullScreen 當FullScreen屬性改變時激發。該事件采用VARIENT_BOOL的一個輸入參數來訓示IE是全屏顯示方式(VARIENT_TRUE)還是普通顯示方式(VARIENT_FALSE)。
OnMenuBar 改變MenuBar的屬性時激發,标示參數是VARIENT_BOOL類型的。VARIANT_TRUE是可見,VARIANT_ FALSE是隐藏。
OnQuit 無論是使用者關閉浏覽器還是開發者調用Quit方法,當IE退出時就會激發。
OnStatusBar 與OnMenuBar調用方法相同,标示狀态欄是否可見。
OnToolBar 調用方法同上,标示工具欄是否可見。
OnVisible 控制視窗的可見或隐藏,也使用一個VARIENT_BOOL類型的參數。
StatusTextChange 如果要改變狀态欄中的文字,這個事件就會被激發,但它并不理會程式是否有狀态欄。
TitleChange Title有效或改變時激發。

如何利用 webbrowser 控件顯示 .gif 動畫?

要有一定的網頁知識(html、javascript、css)

注意細節:

沒有"滾動條"和"滑鼠右鍵彈出的 ie 上下文菜單"".htm 源檔案" ...

我寫了一個效果還真不錯!

\'objects: form1、command1、commondialog1、webbrowser1

option explicit

private sub command1_click()

commondialog1.showopen

if vba.len(vba.trim(commondialog1.filename)) >0 then

dim p as stdole.stdpicture

dim spath as string

spath = vba.trim(vba.trim(commondialog1.filename))

set p = vb.loadpicture(spath)

webbrowser1.width = p.width * 16 / 26

webbrowser1.height = p.height * 16 / 26

\' webbrowser1.navigate "about:blank"

webbrowser1.document.open

webbrowser1.document.writeln ""

webbrowser1.document.writeln "webbrowser1.document.writeln " 

webbrowser1.document.writeln ""

end if

end sub

private sub form_load()

command1.caption = "&open"

webbrowser1.navigate "about:blank"

webbrowser1.document.open

webbrowser1.document.writeln ""

webbrowser1.document.writeln "webbrowser1.document.writeln ""

webbrowser1.document.writeln ""

webbrowser1.document.close

end sub

webbrowser 的事件

beforenavigate2   導航發生前激發,重新整理時不激發

commandstatechange  當指令的激活狀态改變時激發。它表明何時激活或關閉back和forward菜單項或按鈕

documentcomplete   當整個文檔完成是激發,重新整理頁面不激發

downloadbegin   當某項下載下傳操作已經開始後激發,重新整理也可激發此事件

downloadcomplete 當某項下載下傳操作已經完成後激發,重新整理也可激發此事件

navigatecomplete2 導航完成後激發,重新整理時不激發

newwindow2    在建立新視窗以前激發

onfullscreen   當fullscreen屬性改變時激發。該事件采用varient_bool的一個輸入參數來訓示ie是全屏顯示方式(varient_true)還是普通顯示方式(varient_false)

onmenubar 改變menubar的屬性時激發,标示參數是varient_bool類型的。

variant_true是可見,variant_ false是隐藏

onquit   無論是使用者關閉浏覽器還是開發者調用quit方法,當ie退出時就會激發

onstatusbar 與onmenubar調用方法相同,标示狀态欄是否可見。

ontoolbar  調用方法同上,标示工具欄是否可見。

onvisible  控制視窗的可見或隐藏,也使用一個varient_bool類型的參數

statustextchange  如果要改變狀态欄中的文字,這個事件就會被激發,但它并不理會程式是否有狀态欄

titlechange  title有效或改變時激發

webbrowser 技巧(收藏)

看到很多關于webbrowser控件禁止右鍵的提問,回複的方法很多,其中有提到使用微軟提供的webbrowser擴充com伺服器對象(wbcustomizer.dll),但是該方法在我們想使用webbrowser編輯網頁(webbrowser1.document.execcommand

editmode)的時候有很多弊端,比如不能顯示選中的文本等。另有些方法也就不用一一列舉了。

這兒我想提到的是關于mshtml.htmldocument

引用microsoft html object library

rem #窗體代碼#

dim withevents m_dom as mshtml.htmldocument

private function m_dom_oncontextmenu() as boolean

m_dom_oncontextmenu = false

end function

private sub webbrowser1_downloadcomplete()

set m_dom = webbrowser1.document

end sub

rem 好了,右鍵菜單沒有了

=======================================================================

控件調用和獲得收藏夾裡面

基本上用 specialfolder(6) 就可以得到收藏夾的路徑 然後你可以用dir去循環讀入每個目錄然後dir裡面的file,

file的名字就是你要的收藏的名字 路徑可以自己根據從上面得到的路徑去得到.

如果你不用dir也可以用vb的dir控件.