• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        運用RAS調用在VB6.0中完成撥號上網

        運用RAS調用在VB6.0中完成撥號上網

        更新時間:2022-05-13 文章作者:未知 信息來源:網絡 閱讀次數:

        我們常用的軟件如:JETCAR(現在為FLASHGET),GO!ZILLA等都具有撥號上網功能。那么,如何在自己編寫的應用程序中也實現上述的功能呢?本文就利用RAS調用介紹在自己編寫的應用程序如何實現撥號上網。

          一.與撥號網絡有關的結構和函數

          1.RASDIALPARAMS95結構.其定義如下:

        Public Type RASDIALPARAMS95
         dwSize As Long
         szEntryName(RAS95_MaxEntryName) As Byte
         szPhoneNumber(RAS95_MaxPhoneNumber) As Byte
         szCallbackNumber(RAS95_MaxCallbackNumber) As Byte
         szUserName(UNLEN) As Byte
         szPassword(PWLEN) As Byte
         szDomain(DNLEN) As Byte
        End Type

          其中,dwSize表示該結構的大小(以字節為單位)。szEntryName表示一個遠程訪問的入口名,也就是WINDOWS下的撥號網絡中的連接圖標小的文字;szEntryName參數可是是空串,表示僅與第一個有效的MODEM建立遠程連接。szPhoneNumber為表示呼叫的號碼。當szEntryName是空時,zPhoneNumber不能為空。szCallbackNumber表示回叫號碼,一般都設為空。szUserName為建立遠程訪問的用戶名。szPassword為建立遠程訪問的密碼。szDomain為進行遠程訪問用戶名和密碼認證的域名。我們將szDomain設為空,表示遠程訪問的服務器也是該域名下的成員。

          2.RASDIAL函數.其API聲明為:

        Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long

          RASDIAL函數用于建立RAS客戶機和RAS服務器的連接。

          各參數解釋如下:

           lpRasDialExtensions參數在WINDOWS95/98下被忽略。

           lpszPhonebook參數在WINDOWS95/98下也被忽略。

           lprasdialparams參數是指向一個含有RAS連接參數值的RASDIALPARAMS結構變量。

          dwNotifierType參數用于指出參數lpvNotifier的性質。若lpvNotifier 為NULL,則dwNotifierType的值被忽略;若lpvNotifier不為NULL,則dwNotifierType應該為下列值之一:

          (1).0XFFFFFFFF------指出lpvNotifier參數是一個接收進程通知消息的窗口句柄;

          (2).0----------------指出lpvNotifier指向一個RASDIALFUNC回調函數;

          (3).1----------------指出lpvNotifier指向下一個RASDIALFUNC1回調函數。

          lpvNotifier參數用于指向一個接收RASDIAL事件通知的窗口或者回調函數,其性質由dwNotifierType參數決定:

          (1).若lpvNotifier不NULL,表示是異步通信。即RASDIAL會對每個事件發送一個窗口消息或者調用回調函數。RASDIAL函數會立即返回,它通過窗口或者調用回調函數建立連接,與進程通信。

          (2).若lpvNotifier是NULL,表示同步通信。即RASDIAL函數在連接建立完成或者失敗后才會返回。

          lphRasConn參數指向HRASCONN變量,必須先將lphRasConn設置為NULL,然后再調用RASDIAL函數。如果RASDIAL函數調用成功,lphRasconn會放置一個RAS連接句柄。

          3.RASHANGUP函數.其API聲明為:

        Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long

          RASHANGUP函數用于斷開一個RAS連接。其參數hRasConn為指向一個RAS連接的句柄。

          二.用VB6.0實現RAS撥號上網過程。

          新建一個工程,取名為RasDial;然后在該工程中加入如下項目:

          1.新建一個窗體Form1,然后在該窗體中加入如下組件:





           ("連接"按鈕取名為Ras_Dial,"掛斷"按鈕取名為:Ras_HangUp,"退出"按鈕取名為:"Cancel".

           3個文本框分別取名為:PhoneNumber,UserName,PassWord.)
        2.雙擊連接按鈕,加入如下代碼:

        Private Sub Ras_Dial_Click()
        Dim temp As Long
        If PhoneNumber.Text = "" Or UserName.Text = "" Or PassWord.Text = "" Then
        temp = MsgBox("您沒有輸入有效的撥號網絡參數。", vbOKOnly, "錯誤")
        Exit Sub
        End If
        temp = AddConnection("", PhoneNumber.Text, "", UserName.Text, PassWord.Text, "")
        Select Case temp
        Case ERROR_PORT_ALREADY_OPEN: temp = MsgBox("錯誤,端口已經打開!", vbOKOnly, "Error")
        Case ERROR_UNKNOWN: temp = MsgBox("未知的錯誤!", vbOKOnly, "Error")
        Case ERROR_REQUEST_TIMEOUT: temp = MsgBox("錯誤,請求超時!", vbOKOnly, "Error")
        Case ERROR_PASSWD_EXPIRED: temp = MsgBox("錯誤,您沒有輸入密碼!", vbOKOnly, "Error")
        Case ERROR_NO_DIALIN_PERMISSION: temp = MsgBox("錯誤,沒有撥號音!", vbOKOnly, "Error")
        Case ERROR_SERVER_NOT_RESPONDING: temp = MsgBox("錯誤,撥入的遠程計算機沒有響應!", vbOKOnly, "Error")
        Case ERROR_UNRECOGNIZED_RESPONSE: temp = MsgBox("錯誤,未知的響應!", vbOKOnly, "Error")
        Case ERROR_NO_RESPONSES: temp = MsgBox("錯誤,沒有響應!", vbOKOnly, "Error")
        Case ERROR_DEVICE_NOT_READY: temp = MsgBox("錯誤,設備沒有準備好!", vbOKOnly, "Error")
        Case ERROR_LINE_BUSY: temp = MsgBox("錯誤,占線!", vbOKOnly, "Error")
        Case ERROR_NO_ANSWER: temp = MsgBox("錯誤,沒有應答信號!", vbOKOnly, "Error")
        Case ERROR_NO_CARRIER: temp = MsgBox("錯誤,沒有載波信號!", vbOKOnly, "Error")
        Case ERROR_NO_DIALTONE: temp = MsgBox("錯誤,沒有撥號音!", vbOKOnly, "Error")
        Case ERROR_AUTHENTICATION_FAILURE: temp = MsgBox("用戶名密碼出錯!", vbOKOnly, "Error")
        Case ERROR_PPP_TIMEOUT: temp = MsgBox("PPP接入超時。", vbOKOnly, "Error")
        End Select
        End Sub
        3.雙擊掛斷按鈕,加入如下代碼:
        Private Sub Ras_HangUp_Click()
        Dim temp As Long
        temp = RasHangUp(hRasConn)
        End Sub
        4.雙擊退出按鈕,加入如下代碼:
        Private Sub Cancel_Click()
        Unload Me
        End Sub
        5.最后,新建一個模塊,取名為Ras_Dial,加入如下代碼:
        Option Explicit
        Public hRasConn As Long '定義一個指向RAS調用的全局句柄
        Public Const APINULL = 0&
        Public Const UNLEN = 256
        Public Const DNLEN = 15
        Public Const PWLEN = 256
        Public Const RAS95_MaxPhoneNumber = 128
        Public Const RAS95_MaxEntryName = 256
        Public Const RAS95_MaxCallbackNumber = RAS95_MaxPhoneNumber
        Public Type RASDIALPARAMS95
        dwSize As Long
        szEntryName(RAS95_MaxEntryName) As Byte
        szPhoneNumber(RAS95_MaxPhoneNumber) As Byte
        szCallbackNumber(RAS95_MaxCallbackNumber) As Byte
        szUserName(UNLEN) As Byte
        szPassword(PWLEN) As Byte
        szDomain(DNLEN) As Byte
        End Type
        '**********************************
        '* RAS調用錯誤代號 *
        '**********************************
        Public Const NOT_SUPPORTED = 120&
        Public Const RASBASEERROR = 600&
        Public Const SUCCESS = 0&
        Public Const ERROR_PORT_ALREADY_OPEN = (RASBASEERROR + 2)
        Public Const ERROR_UNKNOWN = (RASBASEERROR + 35)
        Public Const ERROR_REQUEST_TIMEOUT = (RASBASEERROR + 38)
        Public Const ERROR_PASSWD_EXPIRED = (RASBASEERROR + 48)
        Public Const ERROR_NO_DIALIN_PERMISSION = (RASBASEERROR + 49)
        Public Const ERROR_SERVER_NOT_RESPONDING = (RASBASEERROR + 50)
        Public Const ERROR_UNRECOGNIZED_RESPONSE = (RASBASEERROR + 52)
        Public Const ERROR_NO_RESPONSES = (RASBASEERROR + 60)
        Public Const ERROR_DEVICE_NOT_READY = (RASBASEERROR + 66)
        Public Const ERROR_LINE_BUSY = (RASBASEERROR + 76)
        Public Const ERROR_NO_ANSWER = (RASBASEERROR + 78)
        Public Const ERROR_NO_CARRIER = (RASBASEERROR + 79)
        Public Const ERROR_NO_DIALTONE = (RASBASEERROR + 80)
        Public Const ERROR_AUTHENTICATION_FAILURE = (RASBASEERROR + 91)
        Public Const ERROR_PPP_TIMEOUT = (RASBASEERROR + 118)
        '**********************************
        '* RAS API 聲明 *
        '**********************************
        Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, ByVal lpString2 As String) As Long
        Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long
        Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
        Public Function AddConnection(strNewEntryName As String, strNewPhoneNumber As String, strNewCallbackNumber As String, strNewUsername As String, strNewPassword As String, strNewDomain As String) As Integer

        Dim lngRetCode As Long
        Dim lngRetLstrcpy As Long
        Dim lngRetHangUp As Long
        Dim lprasdialparams As RASDIALPARAMS95
        lprasdialparams.dwSize = 1052 '在WINDOWS95/98中必須將dwSize設為1052
        '利用lstrcpy函數將字符串拷貝到BYTE數組
        lngRetLstrcpy = lstrcpy(lprasdialparams.szEntryName(0), strNewEntryName)
        lngRetLstrcpy = lstrcpy(lprasdialparams.szPhoneNumber(0), strNewPhoneNumber)
        lngRetLstrcpy = lstrcpy(lprasdialparams.szCallbackNumber(0), strNewCallbackNumber)
        lngRetLstrcpy = lstrcpy(lprasdialparams.szUserName(0), strNewUsername)
        lngRetLstrcpy = lstrcpy(lprasdialparams.szPassword(0), strNewPassword)
        lngRetLstrcpy = lstrcpy(lprasdialparams.szDomain(0), strNewDomain)
        '我們使用同步通信
        Screen.MousePointer = vbHourglass
        hRasConn = 0 '
        lngRetCode = RasDial(ByVal APINULL, vbNullString, lprasdialparams, APINULL, ByVal APINULL, hRasConn)
        Screen.MousePointer = vbDefault
        '測試有沒有錯誤
        If lngRetCode Then
        lngRetHangUp = RasHangUp(hRasConn)
        End If
        AddConnection = lngRetCode
        End Function
        Public Sub RemoveConnection(H_RasConn As Long)
        Call RasHangUp(hRasConn)
        End Sub

          6.最后,編譯生成應用程序,我們就實現了在自己的應用程序中撥號上網。本程序在PWIN98,VB6.0環境下編譯通過。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲AV无码成人专区| 久久精品国产亚洲AV高清热| 激情小说亚洲图片| 在线免费视频一区二区| 亚洲熟妇无码八V在线播放| 午夜视频在线观看免费完整版| 亚洲国产日韩在线成人蜜芽 | 日韩内射激情视频在线播放免费| 亚洲日韩国产精品第一页一区| a毛看片免费观看视频| 亚洲VA中文字幕无码毛片| 无码人妻AV免费一区二区三区| 久久亚洲AV成人无码电影| 性做久久久久久免费观看| 亚洲乱码中文字幕在线| 免费人成视频在线观看视频| 国产免费区在线观看十分钟| 久久精品国产精品亚洲艾草网 | 久久精品免费观看| 久久亚洲精品成人无码网站| 我们的2018在线观看免费高清| 亚洲午夜理论片在线观看| av无码东京热亚洲男人的天堂| 黄色短视频免费看| 伊人久久综在合线亚洲2019| 中文字幕人成无码免费视频 | 亚洲AV永久青草无码精品| 7x7x7x免费在线观看| 亚洲AV无码国产精品永久一区| jlzzjlzz亚洲乱熟在线播放| 亚洲免费视频网站| 亚洲国产精品成人综合色在线| 在线亚洲午夜理论AV大片| 国产成人精品免费视| 国产精品亚洲色图| 久久久久久亚洲精品中文字幕| AV片在线观看免费| 国产福利免费视频| 亚洲天堂2016| 亚洲精品你懂的在线观看| 真人做A免费观看|