Function ModenSeach(com As Integer, Default As String) As String 
Dim a As String 
On Error GoTo aa: 
MSComm.CommPort = com 
MSComm.InputMode = comInputModeBinary 
MSComm.Settings = "9600,n,8,1" 
If MSComm.PortOpen = True Then 
MSComm.PortOpen = False 
End If 
MSComm.DTREnable = True 
MSComm.EOFEnable = True 
MSComm.RTSEnable = True 
MSComm.PortOpen = True 
MSComm.Output = "at" 
a = EcrReadOne(2): a = LCase(a) 
If InStr(a, "at") <> 0 Or InStr(a, "ok") <> 0 Then 
ModenSeach = "Moden" 
Else 
ModenSeach = Default 
End If 
Exit Function 
aa: 
ModenSeach = Default 
'EndTransmit 
End Function Function EcrReadOne(number As Integer) As String 
Dim out() As Byte, i As Integer, data As String data = "": i = 1 
Do 
DoEvents: i = i + 1 
Debug.Print MSComm.InBufferCount 
Loop Until (MSComm.InBufferCount >= number Or i >= 800) ' one plu item read 
If i >= 800 Then 
EcrReadOne = "" 
Exit Function 
End If 
out() = MSComm.Input 
For i = 1 To number 
data = data + Chr(out(i)) 
Next 
EcrReadOne = Trim(data) 
End Function用这个试试!!

解决方案 »

  1.   


    上面的方法只能适用于Modem正确方式是这样:
    Public Const ERROR_SUCCESS = 0&
    Public Const APINULL = 0&
    Public Const HKEY_LOCAL_MACHINE = &H80000002Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKeyAs As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As LongPublic Const REG_SZ = 1
    Public Function IsConnected() As Boolean    '判断是否上网,不用解释了吧? ^_^
    Dim hKey As Long, lpSubKey As String, phkResult As Long, lpValueName As String, lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long, hResult As Long
    IsConnected = False
    lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
    hKey = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, phkResult)If hKey = ERROR_SUCCESS Then
        hKey = phkResult
        lpValueName = "Remote Connection"
        lpReserved = APINULL
        lpType = APINULL
        lpData = APINULL
        lpcbData = APINULL
        hResult = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, ByVal lpData, lpcbData)
        lpcbData = Len(lpData)
        hResult = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData)
        If hResult = ERROR_SUCCESS Then
            If lpData = 0 Then
                IsConnected = False
            Else
                IsConnected = True
            End If
        End If
    End If
    End Function
      

  2.   

    窗体代码Dim eR As EIGCInternetConnectionState
    Dim sMsg As String
    Dim sName As String
    Dim bConnected As BooleanPrivate Sub Form_Load()
        ' Determine whether we have a connection:
        bConnected = InternetConnected(eR, sName)    ' The connection state info parameter provides details
        ' about how we connect:
        If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then
            sMsg = sMsg & "Connection uses a modem." & vbCrLf
        End If
        If (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then
            sMsg = sMsg & "Connection uses LAN." & vbCrLf
        End If
        If (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then
            sMsg = sMsg & "Connection is via Proxy." & vbCrLf
        End If
        If (eR And INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE Then
            sMsg = sMsg & "Connection is Off-line." & vbCrLf
        End If
        If (eR And INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED Then
            sMsg = sMsg & "Connection is Configured." & vbCrLf
        Else
            sMsg = sMsg & "Connection is Not Configured." & vbCrLf
        End If
        If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then
            sMsg = sMsg & "System has RAS installed." & vbCrLf
        End If
       
       ' Display the connection name and info:
        If bConnected Then
            Text1.Text = "Connected: " & sName & vbCrLf & vbCrLf & sMsg
        Else
            Text1.Text = "Not Connected: " & sName & vbCrLf & vbCrLf & sMsg
        End If
    End Sub
      

  3.   

    模块Public Declare Function InternetGetConnectedStateEx Lib "wininet.dll" _
        Alias "InternetGetConnectedStateExA" _
        (ByRef lpdwFlags As Long, _
        ByVal lpszConnectionName As String, _
        ByVal dwNameLen As Long, _
        ByVal dwReserved As Long _
        ) As LongPublic Enum EIGCInternetConnectionState
        INTERNET_CONNECTION_MODEM = &H1&
        INTERNET_CONNECTION_LAN = &H2&
        INTERNET_CONNECTION_PROXY = &H4&
        INTERNET_RAS_INSTALLED = &H10&
        INTERNET_CONNECTION_OFFLINE = &H20&
        INTERNET_CONNECTION_CONFIGURED = &H40&
    End EnumPublic Property Get InternetConnected( _
        Optional ByRef eConnectionInfo As EIGCInternetConnectionState, _
        Optional ByRef sConnectionName As String _
        ) As Boolean
        Dim dwFlags As Long
        Dim sNameBuf As String
        Dim lR As Long
        Dim iPos As Long
        
        sNameBuf = String$(513, 0)
        lR = InternetGetConnectedStateEx(dwFlags, sNameBuf, 512, 0&)
        eConnectionInfo = dwFlags
        iPos = InStr(sNameBuf, vbNullChar)
        If iPos > 0 Then
            sConnectionName = Left$(sNameBuf, iPos - 1)
        ElseIf Not sNameBuf = String$(513, 0) Then
            sConnectionName = sNameBuf
        End If
        InternetConnected = (lR = 1)
    End Property