你只是从托盘中去掉了图标。要关闭它,你要找到它的菜单,给它的菜单项0发送click消息。
你也可以用RasEnumConnections, RasEnumDevices和RasEnumEntries三个API函数找出所有的连接,并把状态为已连接的短掉,这比在托盘上找图标的句柄好一点。
你也可以用RasEnumConnections, RasEnumDevices和RasEnumEntries三个API函数找出所有的连接,并把状态为已连接的短掉,这比在托盘上找图标的句柄好一点。
调试欢乐多
Private Const RAS_MaxDeviceType = 16
Private Const RAS95_MaxDeviceName = 128
Private Const RAS95_MaxEntryName = 256
Private Type RASCONN95
'set dwsize to 412
dwSize As Long
hRasConn As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Type RASENTRYNAME95
'set dwsize to 264
dwSize As Long
szEntryName(RAS95_MaxEntryName) As Byte
End Type
Private Type RASDEVINFO
dwSize As Long
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Declare Function RasEnumDevices Lib "RasApi32.DLL" Alias "RasEnumDevicesA" (lprasdevinfo As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasEnumEntries Lib "RasApi32.DLL" Alias "RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As LongPrivate Sub Command1_Click()
Dim a$
a$ = "rundll rnaui.dll,RnaDial " & List1.List(List1.ListIndex)
' NT Version
' a$ = "rasphone.exe " & Chr$(34) & List1.List(List1.ListIndex) & Chr$(34)
Shell a$, vbNormalFocus
End SubPrivate Sub Command2_Click()
Dim s As Long, l As Long, ln As Long, a$, b$
b$ = List1.List(List1.ListIndex)
ReDim R(255) As RASCONN95
R(0).dwSize = 412
s = 256 * R(0).dwSize
l = RasEnumConnections(R(0), s, ln)
For l = 0 To ln - 1
a$ = StrConv(R(l).szEntryName(), vbUnicode)
a$ = Left$(a$, InStr(a$, Chr$(0)) - 1)
If a$ = b$ Then MsgBox "Connected (or connecting)!": Exit Sub
Next
MsgBox "Not Connected!"
End SubPrivate Sub Form_Load()
Dim s As Long, l As Long, ln As Long, a$
ReDim R(255) As RASENTRYNAME95
R(0).dwSize = 264
s = 256 * R(0).dwSize
l = RasEnumEntries(vbNullString, vbNullString, R(0), s, ln)
For l = 0 To ln - 1
a$ = StrConv(R(l).szEntryName(), vbUnicode)
List1.AddItem Left$(a$, InStr(a$, Chr$(0)) - 1)
Next
On Local Error Resume Next
List1.ListIndex = 0
ReDim Rd(255) As RASDEVINFO
Rd(0).dwSize = Len(Rd(0)) + 3
s = 256 * Rd(0).dwSize
l = RasEnumDevices(Rd(0), s, ln)
For l = 0 To ln - 1
a$ = StrConv(Rd(l).szDeviceName(), vbUnicode)
List2.AddItem Left$(a$, InStr(a$, Chr$(0)) - 1)
Next
List2.ListIndex = 0
End Sub
两个listbox
两个command button