陈伯雄 发表于 2003-2-25 11:46:00

[求助]请教各位...

我想写个程序,用于监控连接和断开因特网的动作。
VB/Win2000/ADSL
我的想法:监控TCP/IP。
请各位出手指教...

陈伯雄 发表于 2003-2-26 09:02:00

Up

mccad 发表于 2003-2-26 19:16:00

如内,不知是否合用

'API函数定义
    Dim eR As EIGCInternetConnectionState
    Dim sMsg As String
    Dim sName As String
    Dim bConnected As Boolean
   
    Private Declare Function InternetSetDialState Lib "wininet.dll" _
   (ByVal lpszConnectoid As String, ByVal dwState As Long, _
   ByVal dwReserved As Long) As Long
   
    Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
    (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
    ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
   
    Private 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 Long
    Private 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 Enum
   
    'InternetConnected 函数判断是否连接到Internet的函数
    '获得是否以及通过何中方式连接到Internet上
    Private Function 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 Function
   
    'InternetConnected 函数的调用
   
    Sub main()
   Dim bConnected As Boolean
   Dim eR As EIGCInternetConnectionState
   Dim sName As String
   Dim sMsg As String
   
      '检测是否已经以及使用什么方法连接到Internet
   
   bConnected = InternetConnected(eR, sName)
   
   
   '根据获得的结果输出
   If (eR And INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM Then
   sMsg = sMsg & "使用modem连接到Internet." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN Then
   sMsg = sMsg & "使用内部网连接到Internet." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY Then
   sMsg = sMsg & "通过代理服务器连接到Internet." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE Then
   sMsg = sMsg & "现在连接处于离线状态." & vbCrLf
   End If
   If (eR And INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED Then
   sMsg = sMsg & "连接已经被设定." & vbCrLf
   Else
   sMsg = sMsg & "没有设定好的连接." & vbCrLf
   End If
   If (eR And INTERNET_RAS_INSTALLED) = INTERNET_RAS_INSTALLED Then
   sMsg = sMsg & "本机已经安装了远程访问服务功能." & vbCrLf
   End If
   
   '显示连接名称
   If bConnected Then
   sMsg = "已连接到Internet,连接名称: " & sName & vbCrLf & vbCrLf & sMsg
   Else
   sMsg = "没有连接到Internet,连接名称: " & sName & vbCrLf & vbCrLf & sMsg
   End If
    Debug.Print sMsg
    End Sub

陈伯雄 发表于 2003-2-27 09:21:00

谢谢,让我试试...

页: [1]
查看完整版本: [求助]请教各位...