你只是从托盘中去掉了图标。要关闭它,你要找到它的菜单,给它的菜单项0发送click消息。
你也可以用RasEnumConnections, RasEnumDevices和RasEnumEntries三个API函数找出所有的连接,并把状态为已连接的短掉,这比在托盘上找图标的句柄好一点。

解决方案 »

  1.   

    我这里有个例程你看看,这个例程显示所有连接、并允许你拨号、断开等等Option Explicit
    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
      

  2.   

    窗体上要添加以下控件:
    两个listbox
    两个command button