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

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

  連通檢測

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

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

clearcase/" target="_blank" >cccccc" width="90%" align="center" bgcolor="#e1e1e1" border="1">
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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97