自己整理的webbrower, 基本涵蓋了所有網上的資料和msn。
http://hi.baidu.com/lovemoe/creat/blog/
方法 說明
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控制項的應用程式實現的Automation 物件(IDispatch)。如果在宿主對象中Automation 物件無效,這個程式將返回WebBrowser
控制項的Automation 物件
Parent 返回WebBrowser控制項的父Automation 物件,通常是一個容器,例如是宿主或IE視窗
Container 返回WebBrowser控制項容器的Automation 物件。通常該值與Parent屬性返回的值相同
Document 為活動的文檔返回Automation 物件。如果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方法來撤銷正在執行的訪問操作
http://hi.baidu.com/lovemoe/creat/blog/
Document 屬性
返回包含 HTML 文檔名稱的字串。
Silent 屬性
禁止顯示任何類型的對話方塊。
DocumentText屬性
擷取或設定當前網頁的 HTML 內容
Url 屬性
擷取或設定當前網頁的 URL。設定該屬性時,會將該控制項定位到新的 URL。
DocumentCompleted 事件
網頁完成載入時發生。
BeforeNavigate 事 件
開 始 導 航 前 發 生。 一 般 在 此 獲 取 完 整 的URL 字 符 串。
GoBack GoForward GoHome方法
定位到記錄中的上一頁和下一頁和首頁。
Refresh方法
重新整理當前頁
Navigate 方法
定位到指定的 URL。Navigate 方 法 的 語 法 格 式 為:
[Flags,][TargetFrameName,][PostData,][Headers]
URL 參數
Uniform Resource Locator獲 得 導 航 用 的 標 准URL 字 符 串。 例 如: 它 能 將”www.MicroSoft.Com” 自 動 翻 譯 為”http://www.MicroSoft.Com”.
webBrowser使用
http://hi.baidu.com/lovemoe/creat/blog/
引用Microsoft HTML Object Library和Microsoft Internet Controls控制項
'擷取Document對象
Set WBD = WebBrowser1.Document
擷取網頁原始碼
WebBrowser1.Document.body.createtextrange().htmltext
最簡單的登陸
Set WBD = WebBrowser1.Document
WBD.body.All("name").Value =" "
WBD.body.All("PASS").Value = " "
WBD.Forms(0).submit
調用帶參數的javascript
WBD.parentWindow.execScript "document.login.submit()", "javascript"
屏蔽網頁的alert對話方塊
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
pDisp.Document.parentWindow.execScript "window.alert=null;"
End Sub
遍曆
For mIndex = 0 To mDocument.Forms.length - 1 '輸出每個FORM
Print mDocument.Forms(mIndex).Name
lstLinks.AddItem "輸出串連"
For mIndexEx = 0 To mDocument.links.length - 1 '輸出串連
lstLinks.AddItem mDocument.links(mIndexEx)
Next
lstLinks.AddItem "圖片地址"
For mIndexEx = 0 To mDocument.images.length - 1 '輸出圖片
lstLinks.AddItem mDocument.images(mIndexEx).src '圖片地址
Next
Next
資料下載完畢後操作
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If URL <> "http://www.baidu.com/" Then Exit Sub
Do
If Not WebBrowser1.Busy Then Exit Do
DoEvents
Loop
獲得瀏覽器資訊:
Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.applevb.com"
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在立即視窗中輸出瀏覽器資訊。)
彈出Webbrowser訊息視窗
Dim oWindow
Set oWindow = WebBrowser1.Document.parentWindow
oWindow.confirm "abcd"
頁面滾動:
Private Sub Command2_Click()
WebBrowser1.Document.parentwindow.scrollby 0, 30
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.applevb.com"
End Sub
(點擊Command2就可以使當前頁面向下滾動30像素)
判斷頁面是否可以前進後退
Private Sub Command1_Click()
WebBrowser1.GoForward
End Sub
Private Sub Command2_Click()
WebBrowser1.GoBack
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.applevb.com"
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
向Webbrowser中寫入HTML內容的幾種方法:
首先在Form_Load中加入
WebBrowser1.Navigate "about:blank"
確保Webbrowser1可用
方法1:
Dim s As String
Dim stream As IStream
s = ""
s = s + ""
s = s + ""
s = s + "hello world "
s = s + ""
s = s + "
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"
如何使網頁不出現捲軸:
Private Sub mnuScroll1_Click()
@#注意:必須在網頁完全顯示之後才可以運行
WebBrowser1.Document.body.Scroll = "no" @#不顯示捲軸的辦法
End Sub
Private Sub mnuScroll2_Click()
@#注意:必須在網頁完全顯示之後才可以運行
WebBrowser1.Document.body.Scroll = "Auto" @#顯示捲軸的辦法
End Sub
如何獲得網頁中被選中部分的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 "http://www.applevb.com"
End Sub
==================
使用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源碼:
<%@ Language=VBScript %>
<%
dim strName
dim strPassword
strName=Trim(Request.Form("name"))
strPassword=Trim(Request.Form("password"))
Response.Write(strName)
Response.Write(strPassword)
if strName="KingZhang" and strPassword="123456" then
Response.Write("登陸成功")
else
Response.Write("非法登陸使用者!")
end if
%>
*********************************************************************
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
Top
********************************************************************
在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 控制項,顯示 .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 ""
WebBrowser1.Document.writeln "WebBrowser1.Document.writeln "
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.writeln "WebBrowser1.Document.writeln ""
WebBrowser1.Document.writeln ""
WebBrowser1.Document.Close
End Sub
WebBrowser控制項說明
方法 說明
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控制項的應用程式實現的Automation 物件(IDispatch)。如果在宿主對象中Automation 物件無效,這個程式將返回WebBrowser
控制項的Automation 物件
Parent 返回WebBrowser控制項的父Automation 物件,通常是一個容器,例如是宿主或IE視窗
Container 返回WebBrowser控制項容器的Automation 物件。通常該值與Parent屬性返回的值相同
Document 為活動的文檔返回Automation 物件。如果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 技巧(收藏)
看到很多關於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控制項.
Private Type SHITEMID
cb As Long
abID As Byte
End Type
Public Type ITEMIDLIST
mkid As SHITEMID
End Type
Public Function SpecialFolder(ByRef CSIDL As Long) As String
locate the favorites folder
Dim R As Long
Dim sPath As String
Dim IDL As ITEMIDLIST
Const NOERROR = 0
Const MAX_LENGTH = 260
R = SHGetSpecialFolderLocation(MDIMain.hwnd, CSIDL, IDL)
If R = NOERROR Then
sPath = Space$(MAX_LENGTH)
R = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
If R Then
SpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1)
End If
End If
End Function
================================================================
是的,webbrowser本生是一個控制項, 你要它全屏,就是要它所在的表單全屏, 可以用setwindowlong取消表單的 title, 用Call ShowWindow(FindWindow(Shell_traywnd, ), 0) 隱藏tray,就是下邊那個包含開始那一行. 用Call ShowWindow(FindWindow(Shell_traywnd, ), 9) 恢複. 夠詳細了吧.
然後在form1.windowstate = 2 就可以了.
====================================================================
選擇網頁上的內容。
Private Sub Command1_Click()
請先選中一些內容
Me.WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
MsgBox Clipboard.GetText
End Sub
=============================================================
用IE來下載檔案
Private Declare Function DoFileDownload Lib shdocvw.dll (ByVal lpszFile As String) As Long
Private Sub Command1_Click()
Dim sDownload As String
sDownload = StrConv(Text1.Text, vbUnicode)
Call DoFileDownload(sDownload)
End Sub
儲存webbrowser中的HTML內容
Dim oPF As IPersistFile
Set oPF = WebBrowser1.Document
oPF.Save "TheFileNameHere.htm", False
WebBrowser1.ExecWB怎麼用
下面是我測試的參數
WB.ExecWB(4,1)
4,1 儲存網頁
4,2 儲存網頁(可以重新命名)
6,1 直接列印
6,2 直接列印
7,1 預覽列印
7,2 預覽列印
8,1 選擇參數
8,2 選擇參數
10,1 查看頁面屬性
10,2 查看頁面屬性
17,1 全選
17,2 全選
22,1 重新載入當前頁
22,2 重新載入當前頁
webbrowser確定對話方塊的正確方法
webbrowser確定視窗對話方塊
某些網頁出於各種考慮會彈出對話方塊要求資訊確認,往往會中斷我們的webbrowser過程,可以使用如下方法:
1.加入Microsoft Html Object
2.加入語句
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Dim obj As HTMLDocument
Set obj = pDisp.Document
obj.parentWindow.execScript "function showModalDialog(){return;}" '對showModalDialog引起的對話方塊進行確定
End Sub
而confirm引發的對話確定框可用confirm替換showModalDialog即可,Alert等同理~
WebBrowser取得網頁源碼Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.sdqx.gov.cn/sdcity.php"
End Sub
Private Sub WebBrowser1_DownloadComplete()
'頁面下載完畢
Dim doc, objhtml
Set doc = WebBrowser1.Document
Set objhtml = doc.body.createtextrange()
If Not IsNull(objhtml) Then
Text1.Text = objhtml.htmltext
End If
End Sub
我用WebBrowser取得網頁源碼,直接運行正常,但在編譯後出錯
提示:即時錯誤“91” Object 變數或 with 塊變數沒有設定
可能是沒有下載完所致,
Private Sub WebBrowser1_DownloadComplete()
if webbrowser.busy=false then
Dim doc, objhtml
Set doc = WebBrowser1.Document
Set objhtml = doc.body.createtextrange()
If Not IsNull(objhtml) Then
Text1.Text = objhtml.htmltext
End If
end if
End Sub
a.htm
----------------------
<HTML>
<HEAD>
<SCRIPT>
var obj;
</SCRIPT>
</HEAD>
<BODY>
<a href=# onclick="obj.w(); return false;">asdasdsad</a>
</BODY>
</HTML>
建立一個EXE再表單上放置一個WebBrowser控制項,改名為web
Private Sub Form_Load()
web.Navigate "c:\a.htm"
DoEvents
Do
While
web.Busy
DoEvents
Loop
Set web.Document.ParentWindow.obj = Me
End Sub
Public Sub w()
MsgBox "haha"
End Sub
post方式提交資料
Option Explicit
Private Sub Command1_Click()
Dim szValue As String
WebBrowser1.Document.body.innerHTML = "<form id=post method=post action=http://地址/xxx.php><input type=text value='" & szValue & "'></form>"
WebBrowser1.Document.Forms("post").submit
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate2 "about:blank"
End Sub
=============