1、獲得瀏覽器信息:
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
點(diǎn)擊Command1瀏覽網(wǎng)頁,點(diǎn)擊Command2在立即窗口中輸出瀏覽器信息。
2、彈出Webbrowser消息窗口
Dim oWindow
Set oWindow = WebBrowser1.Document.parentWindow
oWindow.confirm "abcd"
VB調(diào)用webbrowser技巧集2
向Webbrowser中寫入HTML內(nèi)容的幾種方法
首先在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"
vb調(diào)用Webbrowser技巧集3
1、頁面滾動(dòng):
Private Sub Command2_Click()
WebBrowser1.Document.parentwindow.scrollby 0, 30
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.applevb.com"
End Sub
點(diǎn)擊Command2就可以使當(dāng)前頁面向下滾動(dòng)30像素
2、判斷頁面是否可以前進(jìn)后退
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
VB調(diào)用webbrowser技巧集4
1、如何使網(wǎng)頁不出現(xiàn)滾動(dòng)條:
Private Sub mnuScroll1_Click()
@#注意:必須在網(wǎng)頁完全顯示之后才可以運(yùn)行
WebBrowser1.Document.body.Scroll = "no" @#不顯示滾動(dòng)條的辦法
End Sub
Private Sub mnuScroll2_Click()
@#注意:必須在網(wǎng)頁完全顯示之后才可以運(yùn)行
WebBrowser1.Document.body.Scroll = "Auto" @#顯示滾動(dòng)條的辦法
End Sub
2、如何獲得網(wǎng)頁中被選中部分的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
Navigate 方 法 的 語 法 格 式 為:
WebBrowser 控 件 名.Navigate URL
[Flags,][TargetFrameName,][PostData,][Headers]
---- WebBrowser 控 件 支 持 的 主 要 方 法 有:
GoBack — — — 回 退 到 上 一 屏。
GoForward — — — 進(jìn) 入 到 下 一 屏。
GoHome — — — 回 家。 即 回 到 主 頁。
Stop — — — 停 止 導(dǎo) 航。
Refresh — — — 刷 新。
Navigate — — — 導(dǎo) 航。
---- WebBrowser 控 件 所 響 應(yīng) 的 事 件:
---- BeforeNavigate 事 件 — — — 在 開 始 導(dǎo) 航 前 發(fā) 生。 一 般 在 此 獲 取 完 整 的URL 字 符 串。
---- WebBrowser 控 件 最 主 要 的 參 數(shù):
---- URL — — — 獲 得 導(dǎo) 航 用 的 標(biāo) 準(zhǔn)URL 字 符 串。 例 如: 它 能 將”www.MicroSoft.Com” 自 動(dòng) 翻 譯 為”http://www.MicroSoft.Com”.URL 是Uniform Resource Locator 的 縮 寫, 是 在Internet 的WWW 服 務(wù) 程 序 上 用 于 指 定 信 息 位 置 的 表 示 方 法。
使用WebBrowser的Navigator或者Navigator2方法打開一個(gè)asp文檔并且傳遞
參數(shù)進(jìn)去,但是asp文檔無法獲得參數(shù),請(qǐng)教是什么原因?
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
********************************************************************
請(qǐng)問:在WebBrwoser控件里提供的Navigate或者Navigate2方法中提供了傳遞數(shù)據(jù)
的參數(shù),調(diào)用方式為:WebBrowser1.Navigate2(URL,[Flags],
[TargetFrameName],[PostData],[Headers])
其中PostData參數(shù)就是一個(gè)提交參數(shù)字符串,例如"name=aaa&password=123",
但問題是為什么這個(gè)方法并不是有效的,服務(wù)器端不能取得數(shù)據(jù)?
如果這個(gè)方法是有效的話就不需要用一段html代碼模擬這種調(diào)用了。
下面代碼能檢測(cè)出程序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個(gè)方法和13個(gè)屬性
WebBrowser的8個(gè)方法和13個(gè)屬性,以及它們的功能:
方法 說明
GoBack 相當(dāng)于IE的“后退”按鈕,使你在當(dāng)前歷史列表中后退一項(xiàng)
GoForward 相當(dāng)于IE的“前進(jìn)”按鈕,使你在當(dāng)前歷史列表中前進(jìn)一項(xiàng)
GoHome 相當(dāng)于IE的“主頁”按鈕,連接用戶默認(rèn)的主頁
GoSearch 相當(dāng)于IE的“搜索”按鈕,連接用戶默認(rèn)的搜索頁面
Navigate 連接到指定的URL
Refresh 刷新當(dāng)前頁面
Refresh2 同上,只是可以指定刷新級(jí)別,所指定的刷新級(jí)別的值來自RefreshConstants枚舉表,
該表定義在ExDisp.h中,可以指定的不同值如下:
REFRESH_NORMAL 執(zhí)行簡(jiǎn)單的刷新,不將HTTP pragma: no-cache頭發(fā)送給服務(wù)器
REFRESH_IFEXPIRED 只有在網(wǎng)頁過期后才進(jìn)行簡(jiǎn)單的刷新
REFRESH_CONTINUE 僅作內(nèi)部使用。在MSDN里寫著DO NOT USE! 請(qǐng)勿使用
REFRESH_COMPLETELY 將包含pragma: no-cache頭的請(qǐng)求發(fā)送到服務(wù)器
Stop 相當(dāng)于IE的“停止”按鈕,停止當(dāng)前頁面及其內(nèi)容的載入
屬性 說明
Application 如果該對(duì)象有效,則返回掌管WebBrowser控件的應(yīng)用程序?qū)崿F(xiàn)的自動(dòng)化對(duì)象(IDispatch)。如果在宿主對(duì)象中自動(dòng)化對(duì)象無效,這個(gè)程序?qū)⒎祷豔ebBrowser
控件的自動(dòng)化對(duì)象
Parent 返回WebBrowser控件的父自動(dòng)化對(duì)象,通常是一個(gè)容器,例如是宿主或IE窗口
Container 返回WebBrowser控件容器的自動(dòng)化對(duì)象。通常該值與Parent屬性返回的值相同
Document 為活動(dòng)的文檔返回自動(dòng)化對(duì)象。如果HTML當(dāng)前正被顯示在WebBrowser中,則
Document屬性提供對(duì)DHTML Object Model的訪問途徑
TopLevelContainer 返回一個(gè)Boolean值,表明IE是否是WebBrowser控件頂層容器,是就返回true
Type 返回已被WebBrowser控件加載的對(duì)象的類型。例如:如果加載.doc文件,就會(huì)返
回Microsoft Word Document
Left 返回或設(shè)置WebBrowser控件窗口的內(nèi)部左邊與容器窗口左邊的距離
Top 返回或設(shè)置WebBrowser控件窗口的內(nèi)部左邊與容器窗口頂邊的距離
Width 返回或設(shè)置WebBrowser窗口的寬度,以像素為單位
Height 返回或設(shè)置WebBrowser窗口的高度,以像素為單位
LocationName 返回一個(gè)字符串,該字符串包含著WebBrowser當(dāng)前顯示的資源的名稱,如果資源
是網(wǎng)頁就是網(wǎng)頁的標(biāo)題;如果是文件或文件夾,就是文件或文件夾的名稱
LocationURL 返回WebBrowser當(dāng)前正在顯示的資源的URL
Busy 返回一個(gè)Boolean值,說明WebBrowser當(dāng)前是否正在加載URL,如果返回true
就可以使用stop方法來撤銷正在執(zhí)行的訪問操作
如何利用 WebBrowser 控件,顯示 .GIF 動(dòng)畫?
要有一定的網(wǎng)頁知識(shí)(HTML、JavaScript、CSS)
注意細(xì)節(jié):
沒有"滾動(dòng)條"和"鼠標(biāo)右鍵彈出的 IE 上下文菜單",".HTM 源文件" ...
我寫了一個(gè),效果還真不錯(cuò)!
'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 相當(dāng)于IE的“后退”按鈕,使你在當(dāng)前歷史列表中后退一項(xiàng)
GoForward 相當(dāng)于IE的“前進(jìn)”按鈕,使你在當(dāng)前歷史列表中前進(jìn)一項(xiàng)
GoHome 相當(dāng)于IE的“主頁”按鈕,連接用戶默認(rèn)的主頁
GoSearch 相當(dāng)于IE的“搜索”按鈕,連接用戶默認(rèn)的搜索頁面
Navigate 連接到指定的URL
Refresh 刷新當(dāng)前頁面
Refresh2 同上,只是可以指定刷新級(jí)別,所指定的刷新級(jí)別的值來自RefreshConstants枚舉表,
該表定義在ExDisp.h中,可以指定的不同值如下:
REFRESH_NORMAL 執(zhí)行簡(jiǎn)單的刷新,不將HTTP pragma: no-cache頭發(fā)送給服務(wù)器
REFRESH_IFEXPIRED 只有在網(wǎng)頁過期后才進(jìn)行簡(jiǎn)單的刷新
REFRESH_CONTINUE 僅作內(nèi)部使用。在MSDN里寫著DO NOT USE! 請(qǐng)勿使用
REFRESH_COMPLETELY 將包含pragma: no-cache頭的請(qǐng)求發(fā)送到服務(wù)器
Stop 相當(dāng)于IE的“停止”按鈕,停止當(dāng)前頁面及其內(nèi)容的載入
屬性 說明
Application 如果該對(duì)象有效,則返回掌管WebBrowser控件的應(yīng)用程序?qū)崿F(xiàn)的自動(dòng)化對(duì)象(IDispatch)。如果在宿主對(duì)象中自動(dòng)化對(duì)象無效,這個(gè)程序?qū)⒎祷豔ebBrowser
控件的自動(dòng)化對(duì)象
Parent 返回WebBrowser控件的父自動(dòng)化對(duì)象,通常是一個(gè)容器,例如是宿主或IE窗口
Container 返回WebBrowser控件容器的自動(dòng)化對(duì)象。通常該值與Parent屬性返回的值相同
Document 為活動(dòng)的文檔返回自動(dòng)化對(duì)象。如果HTML當(dāng)前正被顯示在WebBrowser中,則
Document屬性提供對(duì)DHTML Object Model的訪問途徑
TopLevelContainer 返回一個(gè)Boolean值,表明IE是否是WebBrowser控件頂層容器,是就返回true
Type 返回已被WebBrowser控件加載的對(duì)象的類型。例如:如果加載.doc文件,就會(huì)返
回Microsoft Word Document
Left 返回或設(shè)置WebBrowser控件窗口的內(nèi)部左邊與容器窗口左邊的距離
Top 返回或設(shè)置WebBrowser控件窗口的內(nèi)部左邊與容器窗口頂邊的距離
Width 返回或設(shè)置WebBrowser窗口的寬度,以像素為單位
Height 返回或設(shè)置WebBrowser窗口的高度,以像素為單位
LocationName 返回一個(gè)字符串,該字符串包含著WebBrowser當(dāng)前顯示的資源的名稱,如果資源
是網(wǎng)頁就是網(wǎng)頁的標(biāo)題;如果是文件或文件夾,就是文件或文件夾的名稱
LocationURL 返回WebBrowser當(dāng)前正在顯示的資源的URL
Busy 返回一個(gè)Boolean值,說明WebBrowser當(dāng)前是否正在加載URL,如果返回true
就可以使用stop方法來撤銷正在執(zhí)行的訪問操作
WebBrowser 的事件
Private Events Description
BeforeNavigate2 導(dǎo)航發(fā)生前激發(fā),刷新時(shí)不激發(fā)
CommandStateChange 當(dāng)命令的激活狀態(tài)改變時(shí)激發(fā)。它表明何時(shí)激活或關(guān)閉Back和Forward
菜單項(xiàng)或按鈕
DocumentComplete 當(dāng)整個(gè)文檔完成是激發(fā),刷新頁面不激發(fā)
DownloadBegin 當(dāng)某項(xiàng)下載操作已經(jīng)開始后激發(fā),刷新也可激發(fā)此事件
DownloadComplete 當(dāng)某項(xiàng)下載操作已經(jīng)完成后激發(fā),刷新也可激發(fā)此事件
NavigateComplete2 導(dǎo)航完成后激發(fā),刷新時(shí)不激發(fā)
NewWindow2 在創(chuàng)建新窗口以前激發(fā)
OnFullScreen 當(dāng)FullScreen屬性改變時(shí)激發(fā)。該事件采用VARIENT_BOOL的一個(gè)輸
入?yún)?shù)來指示IE是全屏顯示方式(VARIENT_TRUE)還是普通顯示方式(VARIENT_FALSE)
OnMenuBar 改變MenuBar的屬性時(shí)激發(fā),標(biāo)示參數(shù)是VARIENT_BOOL類型的。
VARIANT_TRUE是可見,VARIANT_ FALSE是隱藏
OnQuit 無論是用戶關(guān)閉瀏覽器還是開發(fā)者調(diào)用Quit方法,當(dāng)IE退出時(shí)就會(huì)激發(fā)
OnStatusBar 與OnMenuBar調(diào)用方法相同,標(biāo)示狀態(tài)欄是否可見。
OnToolBar 調(diào)用方法同上,標(biāo)示工具欄是否可見。
OnVisible 控制窗口的可見或隱藏,也使用一個(gè)VARIENT_BOOL類型的參數(shù)
StatusTextChange 如果要改變狀態(tài)欄中的文字,這個(gè)事件就會(huì)被激發(fā),但它并不理會(huì)程序是否有狀態(tài)欄
TitleChange Title有效或改變時(shí)激發(fā)
WEBBROWSER 技巧(收藏)
看到很多關(guān)于WebBrowser控件禁止右鍵的提問,回復(fù)的方法很多,其中有提到使用微軟提供的Webbrowser擴(kuò)展COM服務(wù)器對(duì)象(WBCustomizer.dll),但是該方法在我們想使用Webbrowser編輯網(wǎng)頁(Webbrowser1.Document.execCommand editMode)的時(shí)候有很多弊端,比如不能顯示選中的文本等。另有些方法也就不用一一列舉了。
這兒我想提到的是關(guān)于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 好了,右鍵菜單沒有了
=======================================================================
控件調(diào)用和獲得收藏夾里面
基本上用 specialfolder(6 ) 就可以得到收藏夾的路徑, 然后你可以用dir去循環(huán)讀入每個(gè)目錄,然后dir里面的file, file的名字就是你要的收藏的名字, 路徑可以自己根據(jù)從上面得到的路徑去得到.
如果你不用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本生是一個(gè)控件, 你要它全屏,就是要它所在的窗體全屏, 可以用setwindowlong取消窗體的 title, 用Call ShowWindow(FindWindow(Shell_traywnd, ), 0) 隱藏tray,就是下邊那個(gè)包含開始那一行. 用Call ShowWindow(FindWindow(Shell_traywnd, ), 9) 恢復(fù). 夠詳細(xì)了吧.
然后在form1.windowstate = 2 就可以了.
====================================================================
選擇網(wǎng)頁上的內(nèi)容。
Private Sub Command1_Click()
請(qǐng)先選中一些內(nèi)容
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內(nèi)容
Dim oPF As IPersistFile
Set oPF = WebBrowser1.Document
oPF.Save "TheFileNameHere.htm", False
WebBrowser1.ExecWB怎么用
下面是我測(cè)試的參數(shù)
WB.ExecWB(4,1)
4,1 保存網(wǎng)頁
4,2 保存網(wǎng)頁(可以重新命名)
6,1 直接打印
6,2 直接打印
7,1 打印預(yù)覽
7,2 打印預(yù)覽
8,1 選擇參數(shù)
8,2 選擇參數(shù)
10,1 查看頁面屬性
10,2 查看頁面屬性
17,1 全選
17,2 全選
22,1 重新載入當(dāng)前頁
22,2 重新載入當(dāng)前頁
webbrowser確定對(duì)話框的正確方法
webbrowser確定窗口對(duì)話框
某些網(wǎng)頁出于各種考慮會(huì)彈出對(duì)話框要求信息確認(rèn),往往會(huì)中斷我們的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;}" '對(duì)showModalDialog引起的對(duì)話框進(jìn)行確定
End Sub
而confirm引發(fā)的對(duì)話確定框可用confirm替換showModalDialog即可,Alert等同理~
WebBrowser取得網(wǎng)頁源碼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取得網(wǎng)頁源碼,直接運(yùn)行正常,但在編譯后出錯(cuò)
提示:實(shí)時(shí)錯(cuò)誤“91” Object 變量或 with 塊變量沒有設(shè)置
可能是沒有下載完所致,
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