• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB6.0開發網絡應用的5個技巧

    發布: 2007-5-25 09:18 | 作者: 未知 | 來源: yokel | 查看: 54次 | 進入軟件測試論壇討論

    領測軟件測試網  Visual Basic 6.0(以下簡稱VB 6)以其強大的功能為廣大軟件開發人員所喜愛,被用來開發各種應用程序。隨著Internet的迅猛發展,VB 6在網絡方面的應用開發也越來越多。本文介紹筆者在實際編程開發中總結的5個技巧,希望能為進行網絡開發的朋友們提供一點參考。

      連通檢測

      許多應用程序常常需要在程序中直接進行聯網操作,以便進行一些必要的處理(如在線注冊和在線幫助等),這就要求我們在程序中建立某些連接。很多軟件在不知用戶是否聯網的情況下就啟動瀏覽器查找網址,結果只能查出一錯誤網頁,既浪費用戶時間又沒有任何效果。如果應用程序在查找網頁之前能自動判斷用戶是否已經聯網,就會節約許多時間,提高程序運行效率。

      下面是實現網絡連通檢測的VB 6代碼:

    Private Sub Form_Load()
     If IsConnected = TRUE Then
      MsgBox (“您已經連通了Internet!”)
     End If
     If IsConnected = FALSE Then
      MsgBox (“您還沒有連通 Internet!”)
     End If
    End Sub

    Option Explicit
    /*有關的API聲明和定義*/
    Public Declare Function RasEnumConnections Lib “RasApi32.dll” Alias “RasEnumConnectionsA” (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
     
    Public Declare Function RasGetConnectStatus Lib “RasApi32.dll” Alias “RasGetConnectStatusA” (ByVal hRasCon As Long, lpStatus As Any) As Long

    /*常數和變量的設定*/
    Public Const RAS95_MaxEntryName = 256
    Public Const RAS95_MaxDeviceType = 16
    Public Const RAS95_MaxDeviceName = 32
    Public Type RASCONN95
    dwSize As Long
    hRasCon As Long
    szEntryName(RAS95_MaxEntryName) As Byte
    szDeviceType(RAS95_MaxDeviceType) As Byte
    szDeviceName(RAS95_MaxDeviceName) As Byte
    End Type
    Public Type RASCONNSTATUS95
    dwSize As Long
    RasConnState As Long
    dwError As Long
    szDeviceType(RAS95_MaxDeviceType) As Byte
    szDeviceName(RAS95_MaxDeviceName) As Byte
    End Type
     
    /*函數IsConnected返回連通的狀態,如果為True則表示已連通*/
    Public Function IsConnected() As Boolean
     Dim TRasCon(255) As RASCONN95
     Dim lg As Long
     Dim lpcon As Long
     Dim RetVal As Long
     Dim Tstatus As RASCONNSTATUS95
     TRasCon(0).dwSize = 412
     lg = 256 * TRasCon(0).dwSize
     RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
     If RetVal <> 0 Then
      MsgBox “錯誤”
      Exit Function
     End If
     Tstatus.dwSize = 160
     RetVal = RasGetConnectStatus(TRasCon(0)
    .hRasCon,Tstatus)
     If Tstatus.RasConnState = &H2000 Then
      IsConnected = TRUE
     Else
      IsConnected = FALSE
     End If
    End Function

      啟動撥號網絡中的連接  

      由于撥號網絡不是一個可執行文件, 所以要啟動撥號網絡,需要借助 explorer.exe 。但若是要啟動撥號網絡中的某一個連接,則要借助rundll.exe 和 rnaui.dll兩個文件。啟動方法如下(假定此連接名稱為163):

       Shell “rundll rnaui.dll,RnaDial 163”,vbNormalFocus

      上面假定了連接名稱,但在實際編程中我們是不知道連接名稱的。在窗體上放置一個命令按鈕(cmdCallConnect),在其單擊事件中進行連接處理。下面的代碼介紹如何取得默認的連接名稱并啟動它:

    Option Explicit

    /*有關的API聲明*/
    Private Declare Function RegOpenKeyEx Lib “advapi32” Alias “RegOpenKeyExA” (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
     
    Private Declare Function RegQueryvalueEx Lib “advapi32” Alias “RegQueryvalueExA” (ByVal hKey As Long, ByVal lpvalueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long
    Private Declare Function RegCloseKey Lib “advapi32”(ByVal hKey As Long) As Long

    /*常數的設定*/
    Const HKEY_CURRENT_USER = &H80000001
    Const ERROR_SUCCESS = 0

      在命令按鈕(cmdCallConnect)中加入如下代碼:

    Private Sub cmdCallConnect_Click()
    /*啟動默認撥號連接*/
     Shell “rundll rnaui.dll,RnaDial” +   GetConnect, vbNormalFocus
    End Sub

    /*取得連接的函數(GetConnect)*/
    Public Function GetConnect() As String
    Dim hKey As Long
    Dim SubKey As String
    /*主鍵*/
    hKey = HKEY_CURRENT_USER
    /*子鍵*/
    SubKey = “RemoteAccess”
    /*取得默認連接名*/
    GetConnect=GetRegvalue(hKey,SubKey, “Default”)
    End Function

    /*取得注冊的函數(GetRegvalue)*/
    Public Function GetRegvalue(hKey As Long,lpszSubKey As String,szKey As String) As Variant
     On Error GoTo ErrorRoutineErr:
     Dim phkResult As Long
     Dim lResult As Long
     Dim szBuffer As String
     Dim lBuffSize As Long
     /*創建緩沖區*/
     szBuffer = Space(255)
     lBuffSize = Len(szBuffer)
     /*打開注冊鍵*/
     RegOpenKeyEx hKey, lpszSubKey, 0, 1,phkResult
     /*取得查詢結果*/
     lResult = RegQueryvalueEx(phkResult, szKey, 0, 0, szBuffer, lBuffSize)
     /*關閉注冊鍵*/
     RegCloseKey phkResult
     /*返回結果*/
     If lResult = ERROR_SUCCESS Then
      GetRegvalue = Left(szBuffer, lBuffSize - 1)
     Else
      GetRegvalue =“”
     End If
     Exit Function
     /*意外處理*/
    ErrorRoutineErr:
      GetRegvalue =“”
    End Function
     設計E-mail的接收部分
       
      在VB 6菜單上點擊“工程/部件...”,彈出“部件”對話框,在對話框的控件卡中選中Microsoft MAPI Controls 6.0控件,點擊“確定”按鈕后,工具箱上增加了MAPIMessage和MAPISession兩個圖標。

      在Form上加入一個MAPIMessage控件,取名為MAPIMessage1;再加入一個MAPISession控件,取名為MAPISession1;再加入三個TextBox控件,分別取名為Subject、Content和Indexno, 將它們的Caption分別改為郵件標題、郵件內容和郵件索引號;在TextBox前各加入一個Label控件,將Caption分別改為標題、內容和索引號。

      將MAPIMessage1的各項屬性設置如下:

      ·DownLoadMail=TRUE;

      ·LogonUI=TRUE;

      ·NewSession=FALSE;

      ·UserName=“接收Email”。

      在Form上加入一個按鈕(Getmail),將其Caption改為取郵件。

      在 Getmail_Click()事件中加入以下程序代碼,程序的功能是使我們接收Email。

    MAPIMessage1.Fetch
    Form1.Caption=MAPIMessage1.MsgCount
    MAPIMessage1.MsgIndex=CINT(Indexno.text)
    Subject.Text = MAPIMessage1.MsgNoteText
    Content.Text = MAPIMessage1.MsgSubject

      其中Fetch命令用來將信件抓到系統存儲器的inbuffer中。我們將信件抓回來后,可以通過MsgCount屬性知道信件數量,接著可以用MsgIndex設置要看哪一封信件的內容、標題等。

      設計E-mail的發送部分

      1.參數設置

      進入Exchange系統,選擇新增設置文件后屏幕上會顯示所需要的信息服務,選擇Internet Mail。

      把設置文件的名稱設為test。屏幕會顯示兩個選項,您可以選擇以Modem方式或以Network 方式連接。筆者所用的是Modem方式;假若您是使Internet專線,就要選擇Network 方式。

      選擇Modem方式后,Exchange會要求我們輸入郵件服務器的IP地址。接著將Transform Message的模式設置為Automatic,這樣當我們連接到郵件服務器時,新的信息會自動下載到本地端。接下來,將您所使用的Email地址、全名、口令和下載路徑等一一設置好。

      2.程序設計

      在Form上加入一個MAPIMessage控件,取名為MAPIMessage1;加入一個MAPISession控件,取名為MAPISession1;并加入三個TextBox控件,取名為Subject、Content和Addr。并在三個TextBox前各加入一個Label,將Caption分別改為標題、內容和地址。

      將MAPIMessage1的各項屬性設置如下:

      ·DownLoadMail=TRUE;

      ·LogonUI=TRUE;

      ·NewSession=FALSE;

      ·UserName=“發送Email”。

      這里將DownLoadMail設置為TRUE,當程序和郵件服務器第一次連接時,會將新的郵件下載到本地端。將LogonUI設置為TRUE,則當您程序中Logon名稱輸入錯誤時,系統會顯示一個Message Box來讓您輸入正確的名稱。

      由于這個程序僅使用一個Session,所以可將NewSession設置成FALSE。如果您有許多Session要建立的話,則將它設置成TRUE。UserName中所填的,是我們在Exchange中所新增的設置文件名稱,如果沒有填內容的話,系統將會顯示一些Message Box請您輸入文件。

      在Form上加入三個按鈕,Logon、Logoff和Send,并分別將它們的Caption改為登錄、離網和發送。

      在 Logon_Click()事件中加入以下程序代碼,程序的功能是使我們登錄到郵件服務器:

    MAPISession1.SignOn
    MAPIMessage1.SessionID=MAPISession1.SessionID
    sgBox “Your ID is” + Str
    (MAPISession1.SessionID)

      其中MAPISession1.SignOn是作登錄的動作。在登錄時,因為已經將MAPIMessage1控件的DownLoadMail屬性設置為TRUE,所以可以在屏幕上看到Message Box,顯示系統正在下載郵件。登錄成功后,系統會傳回一個SessionID,將該ID填入MAPIMessage1的SessionID中,這樣就可以利用該Session來傳送Email,同時用Message Box通知用戶發送成功。

      在Logoff_Click()事件中加入以下程序代碼,程序的功能是使我們離開郵件服務器:

       MAPIS1.SignOff

      在Send_Click()事件中加入以下程序代碼,程序的功能是使我們發送Email:

    MAPIMessage1.Compose
    MAPIMessage1.RecipDisplayName = Addr.text
    MAPIMessage1.AddressResolveUI = TRUE
    MAPIMessage1.MsgSubject = Subject.text
    MAPIMessage1.MsgNoteText = Content.text
    MAPIMessage1.Send
    MsgBox “您發送成功啦!”

      其中Compose命令的主要目的是使您可以改變RecipDisplayName的內容,將所需傳送的Email地址、主題和文章內容分別填入RecipDisplayName、MsgSubject和MsgNoteText,接著用Send命令發送出去

      [b]訪問Internet并調用Explorer </b>

      1.實現方法和控件介紹

      首先在VB 6菜單上點擊“工程/部件...”,彈出“部件”對話框,在對話框的控件卡中選中Microsoft Internet Controls控件,點擊“確定”按鈕后工具箱上增加一個WebBrowser圖標,將它加到Form中。

      該控件有以下幾個重要的方法和事件:

      ·GoHome:裝入IE設定的起始頁;

      ·Navigate:裝入頁面,如Object.Navigate url,其中url為URL地址,如http://www.microsoft.com;

      ·GoBack:返回上一個頁面;

      ·GoForward:進入下一個頁面;

      ·Stop:停止載入頁面;

      ·BeforeNavigate Event:在每次裝入頁面前調用該事件;

      ·StatusTextChange Event:每次瀏覽器的操作狀態改變時調用該事件。

      2.具體的訪問方法

      將WebBrowser圖標添加到Form中。并在Form上添加4個命令按鈕,Name屬性分別為:GoButton、BackButton、ForwardButton和StopButton,通過這4個命令按鈕可以實現對瀏覽器的操作。在Form上添加一個TextBox控件,用來輸入和顯示當前的頁面地址。在Form上添加一個Label控件,用來顯示當前瀏覽器操作狀態。

    /*載入Form*/
    Private Sub Form_Load()
     /*程序裝入后進入IE設定的起始頁*/
     WebBrowser1.GoHome
    End Sub

    /*改變Form尺寸*/
    Private Sub Form_Resize()
    /*改變窗口大小后同時改變控件的大小*/
     WebBrowser1.Width = Form1.ScaleWidth
     WebBrowser1.Height = Form1.ScaleHeight - 900
     Label1.Width = Form1.ScaleWidth
     Label1.Top = Form1.ScaleHeight - 300
    End Sub

    Private Sub BackButton_Click()
     /*返回上一個頁面*/
     WebBrowser1.GoBack
    End Sub

    Private Sub ForwardButton_Click()
     /*進入下一個頁面*/
     WebBrowser1.GoForward
    End Sub

    Private Sub GoButton_Click()
     /*瀏覽輸入的頁面*/
     WebBrowser1.Navigate (Text1.Text)
    End Sub

    Private Sub StopButton_Click()
     /*停止瀏覽*/
     WebBrowser1.Stop
    End Sub

    Private Sub Text1_KeyPress(KeyAscii As Integer)
     /*輸入地址后進行瀏覽*/
     If KeyAscii = 13 Then
      WebBrowser1.Navigate (Text1.Text)
     End If
    End Sub

    Private Sub WebBrowser1_BeforeNavigate(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Cancel As Boolean)
     /*將當前顯示的頁面的URL地址顯示在Text1上*/
      Text1.Text = URL
    End Sub

    Private Sub WebBrowser1_StatusTextChange(ByVal Text As String)
     /*Label1顯示當前頁面裝入情況*/
     Label1.Caption = Text
    End Sub

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>