熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

VB.NET表單自動提交實現方案剖析

2013-11-13 10:17:55  來源: .NET編程 

  我們曾經在一篇文章中介紹過郵件自動注冊中的修改代理服務器的應用不過要想實現這一功能的話還需要一個應用的實現那就是VBNET表單自動提交在這裡我們就會為大家詳細介紹這一應用技巧

  前些天在網上看到有人需要郵箱自動注冊的程序於是自己也寫了一個在查資料的過程中我看到一些網友寫的類似文章有一些是基於網絡協議需要了解sessioncookie這些東西對於一個新手來說很繁瑣等到把這些東西搞懂熱情也消耗殆盡vb的優點就在於可以讓那些對於計算機底層不是很了解的人迅速實現自己的程序設計我找到了一種比較簡單的辦法要求對HTML標記語言有所了解即可現在把自己的經驗寫出來於各位網友共享該方法也許不值一提也許對您有所幫助

  我的辦法就是利用控件WebBrowser我想很多人對它都很熟悉在新建一個工程之後您要做的是添加兩個控件一個是WebBrowser另一個是Scriptlet這兩個控件配合使用就可以完成這個任務了Scriptlet中的IHTMLDocument對象可以用來獲得WebBrowser控件中的HTML文檔這兩個控件的名字在組件對話框裡分別叫Microsoft HTML Object Library和Microsoft Internet Controls

  這兩個控件添加完成之後你還需要知道WebBrowser的一個事件DocumentComplete這個事件在整個網頁下載完成之後觸發也就是說在頁面完成之後這個事件即被執行有了這些就可以順利的實現注冊了

  下面以eyou網站的免費郵箱注冊為例來實現我的程序設計新建標准工程後向Form中添加一個WebBrowser控件所有代碼如下

  Dim ii As Integer

  Private Sub Form_Load()

  WebBrowserNavigate ?

  bgp=%CE%D%BD%D%CA%DC&bgp_enable=on

  End Sub

  Private Sub WebBrowser_DocumentComplete

  (ByVal pDisp As Object URL As Variant)

  Dim doc As IHTMLDocument

  Set doc = WebBrowserDocument

  Dim tmp As String

  If InStr(docbodyinnerText 尋找一個新的用戶名) > Then

  tmp = sdfsdf + Trim(Str$(ii))

  docAllItem(uid)focus

  SendKeys tmp

  SendKeys {enter}

  End If

  If InStr(docbodyinnerText 輸入您的個人資料) > Then

  docAllItem(Password)Value =

  docAllItem(Confirm)Value =

  docAllItem(FirstName)Value = tomcant

  docAllItem(question)Value = what is your name

  docAllItem(answer)Value = my name is ddd

  docAllItem(year)Value =

  docAllItem(month)Value =

  docAllItem(day)Value =

  docAllItem(day)focus

  SendKeys {enter}

  End If

  If InStr(docbodyinnerText 申請郵箱成功) > Then

  iiii = ii +

  WebBrowserNavigate ?

  bgp=%CE%D%BD%D%CA%DC&bgp_enable=on

  End If

  End Sub

  Eyou的免費郵箱注冊入口地址為?bgp=%CE%D%BD%D%CA%DC&bgp_enable=on所以要在Form_load事件中使用WebBrowser控件的Navigate方法

  在eyou的注冊入口頁面完成之後WebBrowser_DocumentComplete即被執行在這個函數中主要有三個條件語句在三個條件語句之前有如下三句

  Dim doc As IHTMLDocument

  Set doc = WebBrowserDocument

  Dim tmp As String

  doc定義為IHTMLDocument對象用以取得WebBrowser的文檔tmp字符串是循環注冊中的用戶名在VBNET表單自動提交的程序剛開始定義了ii這個integer變量在每次注冊完成之後ii加附於tmp之後用以改變用戶名

  第一個條件語句如下

  If InStr(docbodyinnerText 尋找一個新的用戶名) > Then

  tmp = sdfsdf + Trim(Str$(ii))

  docAllItem(uid)focus

  SendKeys tmp

  SendKeys {enter}

  End If

  首先判斷是否是注冊入口頁面通過InStr(docbodyinnerText 尋找一個新的用戶名) > 語句實現docbodyinnerText即取得了該頁面中的所有文字如果是則構造一個用戶名

  docAllItem(uid)focus使用戶名文本框取得焦點其中uid是該文本框的ID這個ID的取得是通過查看HTML源代碼得到的所以要求對HTML標記語言有所了解使用戶名文本框取得焦點之後通過SendKeys函數模擬鍵盤向文本框發送tmp字符串這樣用戶名即填寫完成之後發送回車鍵提交表單關於SendKeys函數的使用大家可查閱MSDN幫助

  第二個條件語句首先判斷改頁面是否是個人資料填寫頁面然後填寫個人資料其方法同填寫用戶名一致取得個文本框的ID後填寫其值最後提交表單

  最後一個條件語句判斷郵箱注冊成功後將ii加一然後將頁面重新定位到注冊入口頁面至此一個循環完成

  以上VBNET表單自動提交的代碼即實現了自動注冊提交


From:http://tw.wingwit.com/Article/program/net/201311/13193.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.