⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 130.htm

📁 vb功能实例介绍。详细、很好的实例说明。
💻 HTM
字号:
<p>RAS API上的其他Function </p>
<p></p>
<p></p>
<p>取得目前连接信息</p>
<p>    Function GetAllConnects(ConnEntry() as RASCONN) As Long</p>
<p>       传回值:总共连接数</p>
<p>       使用方式 :</p>
<p>       Dim Conn() AS RASCONN</p>
<p>       Dim icnt as Long</p>
<p>       icnt = GetAllConnects(Conn())</p>
<p></p>
<p></p>
<p>取得所有拨号网络Entry的信息(不管有没有连接)</p>
<p>    Function GetRasNameEntries(Entry() As RASENTRYNAME, _</p>
<p>                               Optional PhonePath As String) As Long</p>
<p>传回值:总共Entry数</p>
<p>       使用方式 :</p>
<p>       Dim Conn() AS RASENTRYNAME</p>
<p>       Dim icnt as Long</p>
<p>       icnt = GetRasNameEntries(Conn())</p>
<p></p>
<p>呼叫修改某一个连接Entry 的Window</p>
<p>    Sub EditEntry(ByVal EntryName As String, _</p>
<p>                  Optional ByVal PhonePath As String)</p>
<p>於拨号网络中新增一个Entry</p>
<p>    Sub CreateEntry(Optional ByVal PhonePath As String)</p>
<p>自动拨接</p>
<p>    Function DialUp(ByVal EntryName As String, ByVal UserN As String, _</p>
<p>          ByVal Pwd As String, Optional ByVal PhonePath As String) As Long</p>
<p>取消拨接</p>
<p>     Function HangUp(ByVal hconn As Long) As Boolean</p>
<p>       hconn的值来自於</p>
<p>       1.DialUp()的传回值</p>
<p>       2.GetAllConnects() RASCONN结构叁数中的hRasConn值</p>
<p></p>
<p>取得连接状态</p>
<p>     Function GetConnectStatus(ByVal hocnn As Long) As Long</p>
<p>       hconn的值来自於</p>
<p>       1.DialUp()的传回值</p>
<p>       2.GetAllConnects() RASCONN结构叁数中的hRasConn值</p>
<p></p>
<p></p>
<p>注释:Below is in rasapi.bas</p>
<p>Public Const RAS_MaxEntryName = 256</p>
<p>Public Const RAS_MaxDeviceName = 128</p>
<p>Public Const RAS_MaxDeviceType = 16</p>
<p>Public Const RAS_MaxPhoneNumber = 128</p>
<p>Public Const RAS_MaxCallbackNumber = 128</p>
<p>Public Const UNLEN = 256</p>
<p>Public Const PWLEN = 256</p>
<p>Public Const DNLEN = 15</p>
<p>Public Const ERROR_INVALID_HANDLE = 6</p>
<p></p>
<p>Type RASCONN</p>
<p>   dwSize As Long 注释:412</p>
<p>   hRasConn As Long</p>
<p>   szEntryName(RAS_MaxEntryName) As Byte</p>
<p>   szDeviceType(RAS_MaxDeviceType) As Byte</p>
<p>   szDeviceName(RAS_MaxDeviceName) As Byte</p>
<p>End Type</p>
<p></p>
<p>Type RASENTRYNAME</p>
<p>  dwSize As Long 注释:264</p>
<p>  szEntryName(RAS_MaxEntryName) As Byte</p>
<p>End Type</p>
<p></p>
<p>Type RASDIALPARAMS</p>
<p>  dwSize As Long 注释:1052</p>
<p>  szEntryName(RAS_MaxEntryName) As Byte</p>
<p>  szPhoneNumber(RAS_MaxPhoneNumber) As Byte</p>
<p>  szCallbackNumber(RAS_MaxCallbackNumber) As Byte</p>
<p>  szUserName(UNLEN) As Byte</p>
<p>  szPassword(PWLEN) As Byte</p>
<p>  szDomain(DNLEN) As Byte</p>
<p>End Type</p>
<p></p>
<p>Type RASCONNSTATUS</p>
<p>    dwSize As Long  注释:144</p>
<p>    RasConnState As Long</p>
<p>    dwError As Long</p>
<p>    szDeviceType(RAS_MaxDeviceType) As Byte</p>
<p>    szDeviceName(RAS_MaxDeviceName) As Byte</p>
<p>End Type</p>
<p></p>
<p>Declare Function RasDial Lib "rasapi32" _</p>
<p>  Alias "RasDialA" (DialExt As Long, ByVal lpPhoneBook As String, _</p>
<p>  RasDialParam As RASDIALPARAMS, ByVal NotifyType As Long, _</p>
<p>  ByVal Notifter As Long, hRasConn As Long) As Long</p>
<p>Declare Function RasCreatePhonebookEntry Lib "rasapi32" _</p>
<p>  Alias "RasCreatePhonebookEntryA" (ByVal hWnd As Long, ByVal lpPhoneBook As String) As Long</p>
<p>Declare Function RasEditPhonebookEntry Lib "rasapi32" _</p>
<p>  Alias "RasEditPhonebookEntryA" (ByVal hWnd As Long, ByVal lpPhoneBook As String, _</p>
<p>  ByVal lpEntryName As String) As Long</p>
<p>Declare Function RasGetErrorString Lib "rasapi32" _</p>
<p>  Alias "RasGetErrorStringA" (ByVal ErrValue As Long, ByVal lpErrStr As String, _</p>
<p>  ByVal cSize As Long) As Long</p>
<p>Declare Function RasEnumEntries& Lib "rasapi32" _</p>
<p>  Alias "RasEnumEntriesA" (ByVal res As String, ByVal lpszPhonebook As String, _</p>
<p>  lpRasEntryBuffer As Any, lpcb As Long, lpcEntries As Long)</p>
<p>Declare Function RasEnumConnections Lib "rasapi32" Alias _</p>
<p>      "RasEnumConnectionsA" (lprasconn As Any, _</p>
<p>       lpcb As Long, lpConnect As Long) As Long</p>
<p>Declare Function RasHangUp Lib "rasapi32" Alias _</p>
<p>      "RasHangUpA" (ByVal hRasConn As Long) As Long</p>
<p>Declare Function RasGetConnectStatus Lib "rasapi32" Alias _</p>
<p>      "RasGetConnectStatusA" (ByVal hRasConn As Long, _</p>
<p>      lprasconnstatus As RASCONNSTATUS) As Long</p>
<p>Declare Function RasGetEntryDialParams Lib "rasapi32" _</p>
<p>   Alias "RasGetEntryDialParamsA" (ByVal lpszPhonebook As String, _</p>
<p>   lpRasDialParams As RASDIALPARAMS, _</p>
<p>   lpfPassword As Byte) As Long</p>
<p></p>
<p>Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)</p>
<p>Enum RasConnState</p>
<p>    RASCS_OpenPort = 0</p>
<p>    RASCS_PortOpened             注释:1</p>
<p>    RASCS_ConnectDevice          注释:2</p>
<p>    RASCS_DeviceConnected        注释:3</p>
<p>    RASCS_AllDevicesConnected    注释:4</p>
<p>    RASCS_Authenticate           注释:5</p>
<p>    RASCS_AuthNotify             注释:6</p>
<p>    RASCS_AuthRetry</p>
<p>    RASCS_AuthCallback</p>
<p>    RASCS_AuthChangePassword</p>
<p>    RASCS_AuthProject</p>
<p>    RASCS_AuthLinkSpeed</p>
<p>    RASCS_AuthAck</p>
<p>    RASCS_ReAuthenticate</p>
<p>    RASCS_Authenticated</p>
<p>    RASCS_PrepareForCallback</p>
<p>    RASCS_WaitForModemReset</p>
<p>    RASCS_WaitForCallback</p>
<p>    RASCS_Projected</p>
<p>    RASCS_StartAuthentication  注释:19</p>
<p>    RASCS_CallbackComplete</p>
<p>    RASCS_LogonNetwork         注释:21</p>
<p>    RASCS_Interactive = &H1000</p>
<p>    RASCS_RetryAuthentication</p>
<p>    RASCS_CallbackSetByCaller</p>
<p>    RASCS_PasswordExpired</p>
<p>    RASCS_Connected = &H2000</p>
<p>    RASCS_Disconnected</p>
<p>End Enum</p>
<p></p>
<p>注释:取得目前连接信息</p>
<p>Public Function GetAllConnections(Conn() As RASCONN) As Long</p>
<p>    Dim dl&, size&, validConnection&, counter%</p>
<p>    ReDim Conn(0)</p>
<p>    Conn(0).dwSize = 412</p>
<p>    size = 412</p>
<p>    dl& = RasEnumConnections(Conn(0), size, validConnection)</p>
<p>    If validConnection > 0 Then</p>
<p>       ReDim Conn(validConnection - 1)</p>
<p>       Conn(0).dwSize = 412</p>
<p>       size = validConnection * 412</p>
<p>       dl& = RasEnumConnections(Conn(0), size, validConnection)</p>
<p>    End If</p>
<p>    If dl = 0 Then</p>
<p>       GetAllConnections = validConnection</p>
<p>    Else</p>
<p>       GetAllConnections = -1</p>
<p>    End If</p>
<p>End Function</p>
<p></p>
<p>注释:取得所有拨号网络Entry的信息(不管有没有连接)</p>
<p>Public Function GetRasNameEntries(Entry() As RASENTRYNAME, Optional PhonePath As String) As Long</p>
<p>Dim di As Long, lpcb As Long, lpentries As Long</p>
<p>Dim addit As Long</p>
<p>Dim i As Long</p>
<p></p>
<p>di& = RasEnumEntries(vbNullString, PhonePath, 0, 0, lpentries)</p>
<p>If lpentries > 0 Then</p>
<p>   i = lpentries - 1</p>
<p>   ReDim Entry(i)</p>
<p>   len5 = LenB(Entry(0))</p>
<p>   addit = (4 - (len5 Mod 4)) Mod 4</p>
<p>   Entry(0).dwSize = len5 + addit</p>
<p>   lpcb = Entry(0).dwSize * (i + 1)</p>
<p>   di& = RasEnumEntries(vbNullString, PhonePath, Entry(0), lpcb, lpentries)</p>
<p>End If</p>
<p>If di = 0 Then</p>
<p>   GetRasNameEntries = lpentries</p>
<p>Else</p>
<p>   GetRasNameEntries = -1</p>
<p>End If</p>
<p>End Function</p>
<p>注释:呼叫修改某一个连接Entry 的Window</p>
<p>Public Sub EditEntry(ByVal EntryName As String, Optional ByVal PhonePath As String)</p>
<p>Dim di As Long</p>
<p>di = RasEditPhonebookEntry(0, PhonePath, EntryName)</p>
<p>End Sub</p>
<p>注释:於拨号网络中新增一个Entry</p>
<p>Public Sub CreateEntry(Optional ByVal PhonePath As String)</p>
<p>Call RasCreatePhonebookEntry(0, PhonePath)</p>
<p>End Sub</p>
<p></p>
<p>注释:自动拨接(Win95 4, 5 个叁数不传,或为vbNullString)</p>
<p>Public Function DialUp(ByVal EntryName As String, ByVal UserN As String, _</p>
<p>    ByVal Pwd As String, Optional ByVal PhoneBook As String, Optional sDomain As String) As Long</p>
<p>Dim RasDialPara As RASDIALPARAMS</p>
<p>Dim bya() As Byte, di As Long</p>
<p>Dim len5 As Long, i As Long</p>
<p>Dim hRasConn As Long</p>
<p></p>
<p>len5 = LenB(RasDialPara)</p>
<p>i = (4 - (len5 Mod 4)) Mod 4</p>
<p>RasDialPara.dwSize = len5 + i 注释:1052</p>
<p>bya = StrConv(EntryName, vbFromUnicode) + ChrB(0)</p>
<p>Call CopyByte(RasDialPara.szEntryName, bya)</p>
<p></p>
<p>bya = StrConv(UserN, vbFromUnicode) + ChrB(0)</p>
<p>Call CopyByte(RasDialPara.szUserName, bya)</p>
<p></p>
<p>bya = StrConv(Pwd, vbFromUnicode) + ChrB(0)</p>
<p>Call CopyByte(RasDialPara.szPassword, bya)</p>
<p></p>
<p>bya = StrConv(sDomain, vbFromUnicode) + ChrB(0)</p>
<p>Call CopyByte(RasDialPara.szDomain, bya)</p>
<p>注释:若使用以下CallBack function的方式,则RasDial()不等连接成功或失败便结束。</p>
<p>di = RasDial(0, PhoneBook, RasDialPara, 0, AddressOf RasDialFunc, hRasConn)</p>
<p></p>
<p>注释:若第二、三个叁数都是0则,RasDial会等连接成功或失败後才执行下一行指令</p>
<p>注释:di = RasDial(0, PhoneBook, RasDialPara, 0, 0, hRasConn)</p>
<p></p>
<p>If di = 0 Then</p>
<p>   DialUp = hRasConn</p>
<p>Else</p>
<p>   DialUp = 0</p>
<p>   Dim str5 As String</p>
<p>   str5 = String(255, Chr(0))</p>
<p>   Call RasGetErrorString(di, str5, 256)</p>
<p>   MsgBox Left(str5, InStr(1, str5, Chr(0)) - 1), vbCritical</p>
<p>   Call HangUp(hRasConn)</p>
<p>End If</p>
<p>End Function</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p>Public Sub RasDialFunc(ByVal unMsg As Long, _</p>
<p>                       ByVal ConnState As Long, _</p>
<p>                       ByVal dwError As Long)</p>
<p>If ConnState = &H2000 Then</p>
<p>   注释: Connect Complete</p>
<p>End If</p>
<p></p>
<p>Debug.Print unMsg, ConnState</p>
<p>End Sub</p>
<p>注释:取消拨接</p>
<p>Public Function HangUp(ByVal hconn As Long) As Boolean</p>
<p>Dim st As Long, len5 As Long</p>
<p>Dim i As Long, ConStatus  As RASCONNSTATUS</p>
<p>st = RasHangUp(hconn)</p>
<p>len5 = LenB(ConStatus)</p>
<p>i = (4 - (len5 Mod 4)) Mod 4</p>
<p>ConStatus.dwSize = len5 + i</p>
<p>Do While True</p>
<p>  Call Sleep(0)</p>
<p>  i = RasGetConnectStatus(hconn, ConStatus)</p>
<p>  If i = ERROR_INVALID_HANDLE Then</p>
<p>     Exit Do</p>
<p>  End If</p>
<p>Loop</p>
<p>If st = 0 Then</p>
<p>   HangUp = True</p>
<p>Else</p>
<p>   HangUp = False</p>
<p>End If</p>
<p>End Function</p>
<p>注释:取得连接状态</p>
<p>Public Function GetConnectStatus(ByVal hocnn As Long) As Long</p>
<p>Dim i As Long, ConStatus  As RASCONNSTATUS</p>
<p>Dim len5 As Long</p>
<p>len5 = LenB(ConStatus)</p>
<p>i = (4 - (len5 Mod 4)) Mod 4</p>
<p>ConStatus.dwSize = len5 + i</p>
<p>i = RasGetConnectStatus(hconn, ConStatus)</p>
<p>If i = 0 Then</p>
<p>   GetConnectStatus = ConStatus.RasConnState</p>
<p>Else</p>
<p>   GetConnectStatus = -1</p>
<p>End If</p>
<p>End Function</p>
<p>Private Sub CopyByte(dest() As Byte, sour() As Byte)</p>
<p>Dim sourL As Long, sourU As Long</p>
<p>Dim destL As Long, destU As Long, i As Long, j As Long</p>
<p>sourL = LBound(sour)</p>
<p>sourU = UBound(sour)</p>
<p>destL = LBound(dest)</p>
<p>destU = UBound(dest)</p>
<p>j = 0</p>
<p>For i = sourL To sourU</p>
<p>    dest(destL + j) = sour(i)</p>
<p>    j = j + 1</p>
<p>    If j >= (destU - destL) + 1 Then</p>
<p>       Exit For</p>
<p>    End If</p>
<p>Next i</p>
<p>End Sub</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -