查本机是否已连上Internet,使用了下面代码:Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef dwFlags As Long, ByVal dwReserved As Long) As Long
ret= InternetGetConnectedState(dwFlags, 0&)发现无论是否连上,ret都是1,dwFlags都是18本机是通过局域网上网,请指教,多谢。

解决方案 »

  1.   

    你可以用这样的办法
    ping一个网址
    看他的返回
      

  2.   

    Ping方式如何实现,有否具体代码?
      

  3.   


    Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
    Private Function IsConnected() As Boolean
        IsConnected = InternetGetConnectedState(0&, 0&)
    End FunctionPrivate Sub Command1_Click()
    MsgBox IsConnected
    End Sub返回值为true就是连上了 false就没有连上
      

  4.   

    to aspower:
    你的这段代码试过了,无论是有没连上,返回都是true
      

  5.   

    不可能
    我试过的
    本机完全没有问题
    如果是连上就是true我断开网络就是false
    你是用什么拨号的?
      

  6.   

    我试过很多次了,都不行。
    用ASDL通过Hub上网。
      

  7.   

    利用WIN95/98中的注册表建植,在注册表的HKEY-LOCAL-MACHINE\System\CurrentControlSet\Services\RemoteAcces\下,当计算机连上因特网时,Remote Connection的植为01 00 00 00,反之,为00 00 00 00,通过这一建植可判断是否连网。 
    1.建立新模块 
    Public Const ERROR-SUCCESS= 0& 
    Public Const APINULL= 0& 
    Public Const HKEY-LOCAL-MACHINE= &H80000002 
    Public ReturnCode As long 
    ’声明API函数 
    RegCloseKey() 
    RegQueryValueEx() ’自定义函数 
    Public function ActiveConnection() As Boolean   Dim hKey As long 
      Dim lpSubKey As string 
      Dim lpReserved As long 
      Dim lpType As long 
      Dim lpData As long 
      Dim lpcbData As long   ActiveConnection=False 
      lpSubKey="System\CurrentControlSet\Services\RemoteAccess" 
      ReturnCode=RegOpenKey(HKEY-LOCAL-MACHINE,lpSubKey,phkResult)   If ReturnCode=ERROR-SUCCESS then 
       hKey=phkResult 
       lpValueName="Remote Connection" 
       lpReserved=APINULL 
       lpType=APINULL 
       lpData=APINULL 
       lpcbData=APINULL 
       ReturnCode=RegQueryValueEx(hKey,lpValueName,lpReserved,lpType,ByVal lpData,lpcbata) 
       lpcbData=Len(lpData) 
       ReturnCode=RegQueryValueEx(hKey,lpValueName,lpReserved,lpType,ByVal lpData,lpcbata)    If ReturnCode=ERROR-SUCCESS then 
        If lpData=0 then 
           ActiveConnection=False 
         Else 
           ActiveConnection=True 
         End If 
       End If 
       RegCloseKey(hKey) 
     End If 
    End funtion 2.新建窗体 
    Priate sub Command1_click() 
     If ActiveConnection=True then 
      MsgBox "OK!" 
     Else 
      MsgBox "ERROR!" 
     End If 
    End sub
      

  8.   

    以上几个朋友给出的方法好像只适用于拨号连接的情况,对通过局域网上网并不适用。
    介绍我自己用的方法楼主试试,用一个winsock控件,可以作为一个函数来调用。Dim bLoop As Boolean, bConnected As Boolean
    Private Function IfConnected() As Boolean
       bLoop = False
       If Winsock1.State <> sckClosed Then Winsock1.Close
       Winsock1.RemoteHost = "http://www.csdn.net"
       Winsock1.RemotePort = 80
       Winsock1.Connect
       Do
          DoEvents
       Loop While bLoop = False
       IfConnected = bConnected
    End FunctionPrivate Sub Winsock1_Close()
       Winsock1.Close
    End SubPrivate Sub Winsock1_Connect()
       Winsock1_Close
       bConnected = True
       bLoop = True
    End SubPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String, _
                               ByVal Scode As Long, ByVal Source As String, _
                               ByVal HelpFile As String, _
                               ByVal HelpContext As Long, _
                               CancelDisplay As Boolean)
       bConnected = False
       bLoop = True
       CancelDisplay = True
    End Sub