首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于rasapi32的RasEnumConnections和RasGetProjectionInfo有关问题

2012-01-10 
关于rasapi32的RasEnumConnections和RasGetProjectionInfo问题建一个FROM1文件代码如下Private Const RAS9

关于rasapi32的RasEnumConnections和RasGetProjectionInfo问题
建一个FROM1文件
代码如下

Private Const RAS95_MaxEntryName = 256
Private Const RAS95_MaxDeviceName = 128
Private Const RAS95_MaxDeviceType = 16

Private Type RASCONN95
  'set dwsize to 412
  dwSize As Long '该结构所占内存的大小(Bytes)
  hRasConn As Long '活动连接的句柄
  szEntryName(RAS95_MaxEntryName) As Byte '活动连接的名称
  szDeviceName(RAS95_MaxDeviceName) As Byte '活动连接的所用的设备名称
  szDeviceType(RAS95_MaxDeviceType) As Byte '活动连接的所用的设备类型
End Type

Private Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long

Private lpchWnd As RASCONN95
Private lpcWidth As Long
Private lpcConnNum As Long
'----------------------------------------
'
'获得IP地址
Private Const ras_MaxIPAddress = 15

Private Type RASPPPIP
  dwSize As Long 'set dwsize to 40
  dwError As Long
  szIpAddress(ras_MaxIPAddress) As Byte
  szServerAddress(ras_MaxIPAddress) As Byte
End Type

Private Declare Function RasGetProjectionInfo Lib "rasapi32.dll" Alias "RasGetProjectionInfoA" ( _
ByVal hRasConn As Long, ByVal rasprojection As Long, lpprojection As RASPPPIP, lpcb As Long) As Long

Private Const RASP_PppIp = &H8021
Private lpcPPPIP As RASPPPIP
Private lpcb As Long
'----------------------
Private Sub Form1_Load()
  If RasEnumConnections(lpchWnd, lpcWidth, lpcConnNum) = 0 Then
  If lpcConnNum > 0 Then
   
  'lpcPPPIP.dwSize = 40

  If RasGetProjectionInfo(lpchWnd.hRasConn, RASP_PppIp, lpcPPPIP, 40) = 0 Then
  '**************************************************
  Debug.Print StrConv(lpcPPPIP.szIpAddress, vbUnicode)
  End If
End If

End If
End Sub



Private Sub Form_Load()
Me.Show
  Dim Conns As Long '记录当前连接数
  ReDim RasConn(255) As RASCONN95 '记录
  Dim lRet As Long '接受枚举返回
  Dim lSize As Long '数组总长度
  Dim i As Long '循环变量
  Dim j As Long '循环变量
  'Dim Item As ListItem '列表项
  RasConn(0).dwSize = 412
  lSize = RasConn(0).dwSize * 255
  lRet = RasEnumConnections(RasConn(0), lSize, Conns)
  '排除枚举错
  If lRet <> 0 Then Exit Sub

For i = 0 To Conns - 1
List1.AddItem Replace(StrConv(RasConn(i).szEntryName, vbUnicode), Chr(0), "")
'lji = Replace(StrConv(RasConn(i).hRasConn, vbUnicode), Chr(0), "")
  If RasGetProjectionInfo(RasConn(i).hRasConn, RASP_PppIp, lpcPPPIP, 40) <> 0 Then
  'lpcPPPIP.dwSize = 40
  tip = Replace(StrConv(lpcPPPIP.szIpAddress, vbUnicode), Chr(0), "")
  End If
Next

End Sub



-----------------------------------------------------------------


For i = 0 To Conns - 1
List1.AddItem Replace(StrConv(RasConn(i).szEntryName, vbUnicode), Chr(0), "")
这个可以获得连接名称.


但怎么下面的
lpcPPPIP.szIpAddress
就得不到那个连接的IP地址呢?

另附一些Delphi参考资料

[解决办法]
拨号网络 还有人用么?

热点排行