rplcmint
Apr 24th, 2001, 11:47 AM
I need to check to see the status of a Dial Up connection. I am making a connection to the internet and then developing a VPN. I want to ping the system to see that I have a network or check the connection status to see if it is hanging. If the dialup connection is bad, I will disconnect and then dial both DialUps again.
I appreciate your input.
Mike:confused:
ricmitch_uk
Apr 24th, 2001, 01:52 PM
How can I detect if there is an active internet connection?
For programs that rely on connecting to the internet, it is very useful to know whether or not the computer has an active connection. Whenever Windows logs on to a dial-up connection, it changes a value in the registry. The following code demonstrates how to read this values to determine whether the computer is connected or not.
Declarations
You must put the following code into the declarations section of your project.
Public Const ERROR_SUCCESS = 0&
Public Const APINULL = 0&
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public ReturnCode As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal _
hKey As Long) As Long
Declare 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 hKey As Long, ByVal lpValueName _
As String, ByVal lpReserved As Long, lpType As Long, _
lpData As Any, lpcbData As Long) As Long
Code
Public Function ActiveConnection() As Boolean
Dim hKey As Long
Dim lpSubKey As String
Dim phkResult As Long
Dim lpValueName 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, lpcbData)
lpcbData = Len(lpData)
ReturnCode = RegQueryValueEx(hKey, lpValueName, _
lpReserved, lpType, lpData, lpcbData)
If ReturnCode = ERROR_SUCCESS Then
If lpData = 0 Then
ActiveConnection = False
Else
ActiveConnection = True
End If
End If
RegCloseKey (hKey)
End If
End Function
Use
Here is an example of how to use the ActiveConnection function.
If ActiveConnection = True then
Call MsgBox("You have an active connection.",vbInformation)
Else
Call MsgBox("You have no active connections.", vbInformation)
End If
For more information about accessing the registry, please check out our demo project.
HTH