The new vbAccelerator Site - more VB and .NET Code and Controls

System Internet Connection - Determining How and If Connected

Author:

Steve McMahon(steve@vbaccelerator.com)

Keywords:

API,Internet,Windows

Updated:

17/08/99

Other Tips
All Tips
By Date
By Subject


API (33)
Bit
Manipulation (3)

Clipboard (3)
Combo
Box (5)

Desktop (3)
GDI (13)
Graphics (13)
Internet (2)
Interprocess
Comms (3)

Keyboard (2)
Mouse (1)
Shell (1)
Sprites (1)
Subclassing (3)
Text
Box (2)

Windows (11)
Windows
Controls (10)



Submit


If you are designing a project which can use an Internet connection, it can be useful to know whether the system is connected or not. There are various methods of doing this, however the most informative and reliable method is to use the WinInet.DLL InternetGetConnectedStateEx() API call. The only problem with this call is it is only implemented for the WinInet.DLL version shipped with Internet Explorer version 4.0 or higher.

To test out this function, start a new project and add the following code:



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 Long

Public 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

Public 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

To try out the code, add a CommandButton and a Multi-Line TextBox to your test project's main form. Then add the following code to try the function:


Private Sub Command1_Click()
Dim eR As EIGCInternetConnectionState
Dim sMsg As String
Dim sName As String
Dim bConnected As Boolean

   ' 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

Run the project. When you click the command button, the text box will be updated with the status of the current connection, the name of RAS dial-up connection used (if applicable) and also various information about how the connection is being achieved (i.e. by modem or LAN, via a proxy and whether the connection is configured or not).


&nbsp

Related Tips and Articles:

&nbsp
 

About  Contribute  Send Feedback  Privacy

Copyright © 1998-1999, Steve McMahon ( steve@vbaccelerator.com). All Rights Reserved.
Last updated: 17/08/99