




已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 防止新窗口里頭打開網(wǎng)頁代碼1:Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)Dim frm As Form1Set frm = New Form1frm.Visible = TrueSet ppDisp = frm.WebBrowser1.objectEnd Sub代碼2:有這段代碼, 有許多網(wǎng)頁會出錯,經(jīng)常提示腳本錯誤,可以用silent屬性為True來屏蔽,不過也有些不足!Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)Cancel = TrueWebBrowser1.Navigate2 WebBrowser1.Document.activeElement.hrefEnd Sub代碼3:Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)On Error Resume NextDim frmWB As Form1Set frmWB = New Form1frmWB.WebBrowser1.RegisterAsBrowser = TrueSet ppDisp = frmWB.WebBrowser1.objectfrmWB.Visible = TruefrmWB.Top = Form1.TopfrmWB.Left = Form1.LeftfrmWB.Width = Form1.WidthfrmWB.Height = Form1.HeightEnd Sub功能差不多,任選一個。2、 去掉滾動條Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)WebBrowser1.Document.Body.Scroll = noEnd Sub實際上上面的效果不咋地,如果懂得HTML知識, 你可以在讀取網(wǎng)頁的時候,讀取HTML源碼, 查找替換, 再寫入只需在 之間插入代碼: 即可。其中x表示水平滾動條,將其改為y的話就可以隱藏垂直滾動條。當然也有其他方法, 比如修改網(wǎng)頁的尺寸呀? 有的時候部分元素的居中改為左對齊也能有效果將WebBrower放在PictureBox控件中,用PictureBox的邊框擋住WebBrower的邊框。例如,將WebBrowser1放大點,將PictureBox變小點.PictureBox的appearance設置為0-flat,呵呵,OK3、 禁止鼠標右鍵Private Function M_Dom_oncontextmenu() As BooleanWebbrowser1.Document.oncontextmenu = FalseEnd Function引用Microsoft HTML OBject LibraryDim WithEvents M_Dom As MSHTML.HTMLDocumentPrivate Function M_Dom_oncontextmenu() As BooleanM_Dom_oncontextmenu = FalseEnd FunctionPrivate Sub Webbrowser1_DownloadComplete()Set M_Dom = Webbrowser1.DocumentEnd Sub4、 如何獲得網(wǎng)頁的內容先給個例子:innerHTML:設置或獲取位于對象起始和結束標簽內的 HTML測試一下:這是一個層function getinnerHTML()alert(document.getElementById(d).innerHTML)function setinnerHTML()document.getElementById(d).innerHTML=這是一個層,嘿嘿5、 多框架框架頁面訪問下面兩句可以訪問到多框架內容.Document.ParentWindow.Frames.Length.Document.ParentWindow.Frames(1).Document.all.tags(a)等待多框架網(wǎng)頁全部加載完畢, 否則出錯 While .Busy Or .ReadyState 4 Or .Document.ParentWindow.Frames.Length = 0 DoEvents Wend6、 獲得瀏覽器信息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 Sub7、 彈出Webbrowser消息窗口Dim oWindowSet oWindow = WebBrowser1.Document.parentWindowoWindow.confirm abcdVB調用webbrowser技巧集28、 向Webbrowser中寫入HTML內容的幾種方法向Webbrowser中寫入HTML內容的幾種方法首先在Form_Load中加入WebBrowser1.Navigate about:blank確保Webbrowser1可用方法1:Dim s As StringDim stream As IStreams = s = s + s = s + s = s + hello worlds = s + s = s + WebBrowser1.Document.Write s方法2:Dim oSet o = WebBrowser1.Document.selection.createrangeDebug.Print oIf (Not o Is Nothing) Theno.pasteHTML 哈哈Set o = NothingEnd If方法3:插入文本框Dim oSet o = WebBrowser1.Document.selection.createrangeo.execCommand InsertTextArea, False, xxx9、 控制頁面滾動WebBrowser1.Document.parentwindow.scrollby 0, 3010、 判斷頁面是否可以前進后退Private Sub Command1_Click()WebBrowser1.GoForwardEnd SubPrivate Sub Command2_Click()WebBrowser1.GoBackEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate End SubPrivate Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)If (Command = CSC_NAVIGATEBACK) ThenCommand2.Enabled = EnableEnd IfIf (Command = CSC_NAVIGATEFORWARD) ThenCommand1.Enabled = EnableEnd IfEnd Sub11、 如何獲得網(wǎng)頁中被選中部分的HTMLPrivate Sub Command1_Click()Dim objSelectionDim objTxtRangeSet objSelection = WebBrowser1.Document.selectionIf Not (objSelection Is Nothing) ThenSet objTxtRange = objSelection.createRangeIf Not (objTxtRange Is Nothing) ThenDebug.Print objTxtRange.htmlTextSet objTxtRange = NothingEnd IfSet objSelection = NothingEnd IfEnd Sub12、 Navigate的參數(shù)調用請問:在WebBrwoser控件里提供的Navigate或者Navigate2方法中提供了傳遞數(shù)據(jù)的參數(shù),調用方式為:WebBrowser1.Navigate2(URL,Flags,TargetFrameName,PostData,Headers)其中PostData參數(shù)就是一個提交參數(shù)字符串,例如name=aaa&password=123,但問題是為什么這個方法并不是有效的,服務器端不能取得數(shù)據(jù)?如果這個方法是有效的話就不需要用一段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 PostDataEnd Sub13、 WebBrowser的方法、屬性、事件WebBrowser的8個方法和13個屬性,以及它們的功能:方法 說明GoBack 相當于IE的“后退”按鈕,使你在當前歷史列表中后退一項GoForward 相當于IE的“前進”按鈕,使你在當前歷史列表中前進一項GoHome 相當于IE的“主頁”按鈕,連接用戶默認的主頁GoSearch 相當于IE的“搜索”按鈕,連接用戶默認的搜索頁面Navigate 連接到指定的URLRefresh 刷新當前頁面Refresh2 同上,只是可以指定刷新級別,所指定的刷新級別的值來自RefreshConstants枚舉表,該表定義在ExDisp.h中,可以指定的不同值如下:REFRESH_NORMAL 執(zhí)行簡單的刷新,不將HTTP pragma: no-cache頭發(fā)送給服務器REFRESH_IFEXPIRED 只有在網(wǎng)頁過期后才進行簡單的刷新REFRESH_CONTINUE 僅作內部使用。在MSDN里寫著DO NOT USE! 請勿使用REFRESH_COMPLETELY 將包含pragma: no-cache頭的請求發(fā)送到服務器Stop 相當于IE的“停止”按鈕,停止當前頁面及其內容的載入屬性 說明Application 如果該對象有效,則返回掌管WebBrowser控件的應用程序實現(xiàn)的自動化對象(IDispatch)。如果在宿主對象中自動化對象無效,這個程序將返回WebBrowser控件的自動化對象Parent 返回WebBrowser控件的父自動化對象,通常是一個容器,例如是宿主或IE窗口Container 返回WebBrowser控件容器的自動化對象。通常該值與Parent屬性返回的值相同Document 為活動的文檔返回自動化對象。如果HTML當前正被顯示在WebBrowser中,則Document屬性提供對DHTML Object Model的訪問途徑TopLevelContainer 返回一個Boolean值,表明IE是否是WebBrowser控件頂層容器,是就返回trueType 返回已被WebBrowser控件加載的對象的類型。例如:如果加載.doc文件,就會返回Microsoft Word DocumentLeft 返回或設置WebBrowser控件窗口的內部左邊與容器窗口左邊的距離Top 返回或設置WebBrowser控件窗口的內部左邊與容器窗口頂邊的距離Width 返回或設置WebBrowser窗口的寬度,以像素為單位Height 返回或設置WebBrowser窗口的高度,以像素為單位LocationName 返回一個字符串,該字符串包含著WebBrowser當前顯示的資源的名稱,如果資源是網(wǎng)頁就是網(wǎng)頁的標題;如果是文件或文件夾,就是文件或文件夾的名稱LocationURL 返回WebBrowser當前正在顯示的資源的URLBusy 返回一個Boolean值,說明WebBrowser當前是否正在加載URL,如果返回true就可以使用stop方法來撤銷正在執(zhí)行的訪問操作事件 說明Private Events DescriptionBeforeNavigate2 導航發(fā)生前激發(fā),刷新時不激發(fā)CommandStateChange 當命令的激活狀態(tài)改變時激發(fā)。它表明何時激活或關閉Back和Forward菜單項或按鈕DocumentComplete 當整個文檔完成是激發(fā),刷新頁面不激發(fā)DownloadBegin 當某項下載操作已經(jīng)開始后激發(fā),刷新也可激發(fā)此事件DownloadComplete 當某項下載操作已經(jīng)完成后激發(fā),刷新也可激發(fā)此事件NavigateComplete2 導航完成后激發(fā),刷新時不激發(fā)NewWindow2 在創(chuàng)建新窗口以前激發(fā)OnFullScreen 當FullScreen屬性改變時激發(fā)。該事件采用VARIENT_BOOL的一個輸入?yún)?shù)來指示IE是全屏顯示方式(VARIENT_TRUE)還是普通顯示方式(VARIENT_FALSE)OnMenuBar 改變MenuBar的屬性時激發(fā),標示參數(shù)是VARIENT_BOOL類型的。VARIANT_TRUE是可見,VARIANT_ FALSE是隱藏OnQuit 無論是用戶關閉瀏覽器還是開發(fā)者調用Quit方法,當IE退出時就會激發(fā)OnStatusBar 與OnMenuBar調用方法相同,標示狀態(tài)欄是否可見。OnToolBar 調用方法同上,標示工具欄是否可見。OnVisible 控制窗口的可見或隱藏,也使用一個VARIENT_BOOL類型的參數(shù)StatusTextChange 如果要改變狀態(tài)欄中的文字,這個事件就會被激發(fā),但它并不理會程序是否有狀態(tài)欄TitleChange Title有效或改變時激發(fā)14、 本地文件收藏夾操作基本上用 specialfolder(6 ) 就可以得到收藏夾的路徑, 然后你可以用dir去循環(huán)讀入每個目錄,然后dir里面的file, file的名字就是你要的收藏的名字, 路徑可以自己根據(jù)從上面得到的路徑去得到.如果你不用dir也可以用vb的dir控件.Private Type SHITEMIDcb As LongabID As ByteEnd TypePublic Type ITEMIDLISTmkid As SHITEMIDEnd TypePublic Function SpecialFolder(ByRef CSIDL As Long) As Stringlocate the favorites folderDim R As LongDim sPath As StringDim IDL As ITEMIDLISTConst NOERROR = 0Const MAX_LENGTH = 260R = SHGetSpecialFolderLocation(MDIMain.hwnd, CSIDL, IDL)If R = NOERROR ThensPath = Space$(MAX_LENGTH)R = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)If R ThenSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1)End IfEnd IfEnd Function15、 讓Webbrowser全屏是的,webbrowser本生是一個控件, 你要它全屏,就是要它所在的窗體全屏, 可以用setwindowlong取消窗體的 title, 用Call ShowWindow(FindWindow(Shell_traywnd, ), 0) 隱藏tray,就是下邊那個包含開始那一行. 用Call ShowWindow(FindWindow(Shell_traywnd, ), 9) 恢復. 夠詳細了吧.然后在form1.windowstate = 2 就可以了.16、 選擇網(wǎng)頁上的內容Private Sub Command1_Click()請先選中一些內容Me.WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULTMsgBox Clipboard.GetTextEnd Sub17、 用IE來下載文件Private Declare Function DoFileDownload Lib shdocvw.dll (ByVal lpszFile As String) As LongPrivate Sub Command1_Click()Dim sDownload As StringsDownload = StrConv(Text1.Text, vbUnicode)Call DoFileDownload(sDownload)End Sub保存webbrowser中的HTML內容Dim oPF As IPersistFileSet oPF = WebBrowser1.DocumentoPF.Save TheFileNameHere.htm, FalseWebBrowser1.ExecWB怎么用 下面是我測試的參數(shù)WB.ExecWB(4,1)4,1 保存網(wǎng)頁4,2 保存網(wǎng)頁(可以重新命名)6,1 直接打印6,2 直接打印7,1 打印預覽7,2 打印預覽8,1 選擇參數(shù)8,2 選擇參數(shù)10,1 查看頁面屬性10,2 查看頁面屬性17,1 全選17,2 全選22,1 重新載入當前頁22,2 重新載入當前頁18、 Webbrowser確定窗口對話框某些網(wǎng)頁出于各種考慮會彈出對話框要求信息確認,往往會中斷我們的webbrowser過程,可以使用如下方法:1.加入Microsoft Html Object2.加入語句Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)Dim obj As HTMLDocumentSet obj = pDisp.Documentobj.parentWindow.execScript function showModalDialog()return; 對showModalDialog引起的對話框進行確定End Sub而confirm引發(fā)的對話確定框可用confirm替換showModalDialog即可,Alert等同理WebBrowser取得網(wǎng)頁源碼Private Sub Command1_Click()WebBrowser1.Navigate /sdcity.phpEnd SubPrivate Sub WebBrowser1_DownloadComplete()頁面下載完畢Dim doc, objhtmlSet doc = WebBrowser1.DocumentSet objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd IfEnd Sub19、 取得源碼調試正常運行錯誤我用WebBrowser取得網(wǎng)頁源碼,直接運行正常,但在編譯后出錯提示:實時錯誤“91” Object 變量或 with 塊變量沒有設置可能是沒有下載完所致,Private Sub WebBrowser1_DownloadComplete()if webbrowser.busy=false thenDim doc, objhtmlSet doc = WebBrowser1.DocumentSet objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd Ifend ifEnd Sub20、 頁面元素操作1.根據(jù)標記名(tagname)的和元素名name來找到元素, 2.給元素賦值或是執(zhí)行相關的事件. 例0: 查看網(wǎng)頁元素 dim a for each a in wbr.document.all text1.text=text1.text & typename(a) & vbcrlf next例1: 給username文本框內填充內容: Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim doc Dim tg Set doc = WebBrowser1.Document For i = 0 To doc.All.length - 1 If (LCase(doc.All(i).tagname) = input Then if (LCase(doc.All(i).name) = username then Set tg = doc.All(i) tg.value=text1.text end if End If Next i End Sub 例2: 找到提交按鈕并點擊 Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim doc Dim tg Set doc = WebBrowser1.Document For i = 0 To doc.All.length - 1 If (LCase(doc.All(i).tagname) = input Then if (LCase(doc.All(i).type) = submit then Set tg = doc.All(i) tg.click end if End If Next i End Sub上面在MSDN2找到個答案還沒試.IFRAME內的網(wǎng)頁的方法不同,可能要用到窗口.試驗后再說吧.例3: 難度的INPUT onclick=this.disabled=true;this.value=登錄中請稍候;document.form1.submit(); type=submit value= 登 錄 For i = 0 To vDoc.All.length - 1 用 i 來判斷submit 為第幾個,再點擊它例4: 模擬鼠標點擊來點擊按鈕Private Declare Function GetMessageExtraInfo Lib user32 () As LongPrivate Declare Sub mouse_event Lib user32 _ (ByVal dwFlags As Long, _ ByVal dx As Long, _ ByVal dy As Long, _ ByVal cButtons As Long, _ ByVal dwExtraInfo As Long)Private Const MOUSEEVENTF_LEFTDOWN As Long = &H2Private Const MOUSEEVENTF_LEFTUP As Long = &H4sub clk()至于按鈕的坐標值就是x,y,這個你得自己找了,因為窗口放在不同的位置,坐標是不一樣的,你可以用getcursorpos取得,不過,就算你點了,又有什么用呢?點完了還是要驗證碼的!mouse_event MOUSEEVENTF_LEFTDOWN, x, y, 0, GetMessageExtraInfomouse_event MOUSEEVENTF_LEFTUP, x, y, 0, GetMessageExtraInfoend sub21、 網(wǎng)頁按鈕的終極控制一般來說,最簡單最直接的操作網(wǎng)頁表單提交方法就是WebBrowser1.Document.All(Namd).Value=xxxx 填表WebBrowser1.Document.All(DengLu).Click 按鈕點擊不過此方法需要知道該表單的各個元素的ID.一般來說,普通的網(wǎng)頁都能直接從網(wǎng)頁源文件中找到這些東西.假如整個表單都沒能在源文件中找到的,那可以用 Text1 = WebBrowser1.Document.getElementById(BiaoID).innerHTML BiaoID為表單所在表格的ID這樣Text1顯示出來的就是你所要的表單的代碼了.不過即使是得到隱藏的代碼了,還是有可能碰到?jīng)]ID沒NAME沒類型的按鈕,這怎么辦呢?不怕,通用方法來了.沒ID我們就給它個ID嘛.在DocumentComplete里網(wǎng)頁完全打開后處理網(wǎng)頁源碼,給你要點擊的按鈕起個名(加上ID)例如: Text1 = 確定將其變?yōu)? Text1 = 確定然后用 WebBrowser1.Document.body.innerHTML = Text1.Text 將處理完的網(wǎng)頁裝入WebBrowser1然后就可以用回一開始說的最簡單的方法來點擊了 WebBrowser1.Document.All(abc).Click 按鈕點擊怎么樣,是不是很爽丫,這樣就不用去思考還有沒什么條件可以來定位這個按鈕然后再點擊了.當然,還有中方法是: Dim OButton OButton = WebB.Document.getElementsByTagName(BUTTON) OButton.Click 這樣就點擊了前邊例子中的那個按鈕了.這方法通用性也是很強,自己研磨一下你就能運用自如了.22、執(zhí)行網(wǎng)頁中的腳本Function js(scripts) On Error GoTo 1 If scripts = Then Exit F
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能建筑系統(tǒng)集成與智能監(jiān)控系統(tǒng)在商業(yè)綜合體中的應用案例報告
- 文化產(chǎn)業(yè)園產(chǎn)業(yè)集聚與文化產(chǎn)業(yè)發(fā)展路徑選擇報告001
- 2025年醫(yī)藥行業(yè)未來趨勢:仿制藥一致性評價下的醫(yī)藥電商發(fā)展報告001
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)與數(shù)據(jù)管理與分析報告
- 咨詢工程師2020課件
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式下的臨床試驗外包服務合同管理與風險控制報告
- 折扣零售業(yè)態(tài)行業(yè)競爭態(tài)勢與品牌戰(zhàn)略研究報告
- 2025年醫(yī)藥流通企業(yè)供應鏈成本控制與績效評估報告
- 醫(yī)療健康數(shù)據(jù)隱私保護2025年合規(guī)技術應用案例集報告
- 保潔安全知識試題及答案
- 2024勞務分包合同書樣本
- 工藝安全性分析報告
- 高速列車傾斜控制系統(tǒng)分析與綜合設計
- 川教版七年級《生命.生態(tài).安全》下冊第16課《生態(tài)環(huán)境與生態(tài)文明》課件
- 2023-2024學年山東青島膠州市高一物理第二學期期末監(jiān)測試題含解析
- 電纜橋架技術規(guī)范
- 初中英語《反義疑問句》優(yōu)質課件
- 《風電場工程規(guī)劃報告編制規(guī)程》(NB-T 31098-2016)
- 中國產(chǎn)科麻醉專家共識(2021版)-共識解讀
- 高血糖高滲狀態(tài)
- 病毒性肝炎患者的護理查房
評論
0/150
提交評論