VB-Homepage Tipp 147

Status einer DFÜ-Verbindung abfragen

Gleich zu Beginn eine Einschränkung, wenn Sie hoffen, mit diesem Tipp den Status Ihrer Verbindung zu AOL abzufragen und daraufhin ggf. einen Onlinetimer zu entwerfen ...
Das geht nicht,   .... weil, die AOL Verbindung über Winsock aufgebaut wird und dies ist halt nicht mit einer DFÜ Verbindung vergleichbar.

Wenn Sie aber über Modem eine Direktverbindung zu einer Mailbox oder einen Dienstanbieter mit direkter Interneteinwahl haben, oder Sie sich über RAS zu einem anderen Rechner verbinden, dann klappt es.

Sie benötigen

1. ein neues Projekt mit einer Form und einem Modul

2. Im Allgemein/Deklarationen Abschnitt des Moduls folgenden Code.
Public Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Public Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long
Public Const RAS95_MaxEntryName = 256
Public Const RAS95_MaxDeviceType = 16
Public Const RAS95_MaxDeviceName = 32

Public Type RASCONN95
dwSize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

Public Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

3. Eine eigene Prozedur unter Allgemein/IsConnected des Moduls entsteht beim Einfügen des Codes automatisch.

Public Function IsConnected() As Integer
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95

TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
If lpcon = 0 Then
IsConnected = 0
Exit Function
End If
Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
If Tstatus.RasConnState = &H2000 Then
IsConnected = 2
Else
IsConnected = 1
End If
End Function

4. Fügen Sie in Ihre Form ein Labelobjekt als Ausgabefenster und einen Timer ein, dessen Intervall Sie auf 500 (als 0,5Sek.) stellen.

5. Nun geben Sie dem Timer noch folgendes mit auf den Weg.
Select Case IsConnected
Case 0
Label1.Caption = "Keine Verbindung"
Case 1
Label1.Caption = "Verbindung wird auf-/abgebaut"
Case 2
Label1.Caption = "Verbindung steht"
End Select

6. Für die visuelle Verschönerung sind Sie zuständig, ansonsten war es das schon. Starten sie Ihr Projekt zum Test mit F5.

Den Sourcecode zugesendet hat Oliver, auch wenn er darauf verweißt nicht der Autor zu sein, trotzdem besten Dank, das wir den Tipp mit in die Datenbank aufnehmen können.


Tipp-Download

Quelle :

Zurück zur Übersichtsseite