读书人

关于rasapi32的RasEnumConnections和R

发布时间: 2012-01-10 21:26:51 作者: rapoo

关于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参考资料

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

读书人网 >VB

热点推荐