Besteht eine DFÜ-Verbindung?
Schreiben Sie eine Anwendung mit Internet-Anbindung, einen Gebührenzähler oder ähnliche Anwendungen? Dann sollten Sie wissen, ob überhaupt eine Verbindung besteht (die Einschränkung gleich vorweg: hier wird es nur um Verbindungen des DFÜ-Netzwerks gehen - proprietäre Einwählprogramme wie T-Online, AOL werden nicht erfaßt).
Das 32 Bit-API bietet hierfür die Funktionen RasEnumConnections, die die aktiven Verbindungen des DFÜ-Netzwerks auflistet:
Zunächst wird ein Array der Struktur RASCONN dimensioniert, das dazu dienen soll, alle bestehenden DFÜ-Verbindungen zu erfassen. Vor dem Aufruf übergeben wir die Größe der Struktur mit 412 Bytes, um Windows mitteilen zu können, wieviel Puffer wir zur Rückgabe von Informationen zur Verfügung stellen werden. Nun kann mit der Abfrage mittels RasEnumConnections begonnen werden, indem die Startadresse des Arrays (das erste Element des Arrays mit dem Index 0) als erster Parameter übergeben wird. Da theoretisch bis zu 256 Verbindungen möglich sind, übergeben wir im nächsten Parameter die ermittelte Größe der RASCONN-Struktur (multipliziert mit 256) in der Variablen lpcb. Als letzten Parameter übergeben wir eine als Long dimensionierte Variable, in der Windows uns informieren wird, wieviele Verbindungsinformationen im Array abgelegt wurden:
Liefert Windows in lpcConnections eine 0 zurück, können wir uns jede weitere Anstrengung sparen - es besteht keine Verbindung. Andernfalls können wir (für die weitere Verwendung wie beispielsweise einen Verbindungsabbruch mittels der Funktion RasHangUp) die Handle der Verbindung im Parameter hRasConn der RASCONN95-Struktur ermitteln und den Verbindungsnamen (der noch in Unicode umgesetzt und des abschließenden Escape-Zeichens vbNullChar beraubt werden will) deren Parameter szEntryName entnehmen:
Auf analoge Weise können Sie die Statistik aller Verbindungen abfragen, die Windows zurückgeliefert hat: Deren Indizes liegen zwischen 0 und lpcConnections - 1.
Das 32 Bit-API bietet hierfür die Funktionen RasEnumConnections, die die aktiven Verbindungen des DFÜ-Netzwerks auflistet:
' 32 Bit
Private Type RASCONN
dwSize As Long
hRasConn As Long
szEntryName(256) As Byte
szDeviceType(16) As Byte
szDeviceName(128) As Byte
End Type
Private Declare Function RasEnumConnectionsA& Lib "RasApi32.DLL" _
(lprasconn As Any, lpcb&, lpcConnections&)
Dim lprasconn(255) As RASCONN, lpcConnections As Long, _
lpcb As Long, hRasConn As Long, NameRasConn As String
lprasconn(0).dwSize = 412
lpcb = 256 * lprasconn(0).dwSize
If RasEnumConnectionsA(lprasconn(0), lpcb, lpcConnections) = 0 Then
'....
'....
If lpcConnections > 0 Then ' Eine DFÜ-Netzwerkverbindung ist aktiv
hRasConn = lprasconn(0).hRasConn ' Handle der Verbindung
NameRasConn = StrConv(lprasconn(0).szEntryName, vbUnicode)
NameRasConn = Left$(NameRasConn, InStr(NameRasConn, vbNullChar) - 1)
MsgBox "Folgende DFÜ-Netzwerkverbindung ist aktiv: " & NameRasConn
End If
End If
Please also mark the comments that contributed to the solution of the article
Content-ID: 24
Url: https://administrator.de/contentid/24
Printed on: December 14, 2024 at 16:12 o'clock