真郁闷呀,就这点代码,费半天劲,DOTRAS怎么会没有这个功能呢?
DOTRAS的就只有一个获取dotras.RasConnection.GetActiveConnections这应该是活动连接
'调用方法
Dim strADSL As String = ras.ListADSL()
If strADSL <> "" Then
Dim arr() As String = Split(strADSL, "|")
For i As Integer = 1 To UBound(arr)
ComboBoxADSL.Items.Add(arr(i))
Next i
If ComboBoxADSL.Items.Count > 0 Then ComboBoxADSL.SelectedIndex = 0
End If
'以下部分放到类中
Imports System.Runtime.InteropServices
Imports System.Text
Public Class ras
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
Private Structure RASENTRYNAME
Dim dwSize As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257 + 1)> _
Dim szEntryName As String
Dim Flags As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260 + 1)> _
Dim szPhonebookPath As String
End Structure
Private Declare Auto Function RasEnumEntries Lib "rasapi32.dll" ( _
ByVal reserved As String, _
ByVal phonebook As String, _
<[In](), Out()> ByVal rasEntryNames() As RASENTRYNAME, _
ByRef cntBytes As Integer, _
ByRef cntEntries As Integer _
) As Integer
Public Shared Function ListADSL() As String
Dim tmpadsl As String = ""
Dim lngRtn As Long
Dim EntryCnt As Long
Dim Entry(255) As RASENTRYNAME
Entry(0).dwSize = Marshal.SizeOf(GetType(RASENTRYNAME))
lngRtn = RasEnumEntries(vbNullString, vbNullString, Entry, Entry(0).dwSize * 255, EntryCnt)
Dim i As Long
For i = 0 To EntryCnt - 1
tmpadsl = tmpadsl & "|" & Entry(i).szEntryName
Next i
ListADSL = tmpadsl
End Function
End Class