VB-Homepage Tipp 418

Ermitteln der Laufzeiten aller geöffneten RAS Verbindungen

Wenn Sie den Überblick behalten möchten, weil Sie tagtäglich mehrere RAS Verbindungen nutzen, dann können Sie mit diesem Tipp alle Verbindungszeiten aufzeichnen. Dabei wird die Zählung fortgesetzt, wenn eine geschlossene Verbindung wieder aufgebaut wird.

1. Form und Objekte
Für ein Demoprojekt benötigen Sie erstens einen Timer, dessen Intervall Sie auf 1000 setzen (also 1 Sek.). Desweiteren sollen die Verbindungsnamen und deren Zeiten in einem ListView Objekt dargestellt werden. Fügen Sie dazu das MS Windows Common Controls, über Komponenten, Ihrem Projekt hinzu und plazieren Sie ein ListView Objekt auf Ihrer Form.

2. Allgemein/Deklarationen
Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long, lpcConnections As Long) As Long
Const RAS_MAXENTRYNAME As Integer = 256
Const RAS_MAXDEVICETYPE As Integer = 16
Const RAS_MAXDEVICENAME As Integer = 128
Const RAS_RASCONNSIZE As Integer = 412
Const ERROR_SUCCESS = 0

Private Type RasConn
   dwSize As Long
   hRasConn As Long
   szEntryName(RAS_MAXENTRYNAME) As Byte
   szDeviceType(RAS_MAXDEVICETYPE) As Byte
   szDeviceName(RAS_MAXDEVICENAME) As Byte
End Type

3. Allgemein/ByteToString
'Werte umwandeln BYTE > STRING
Public Function ByteToString(ByteArray() As Byte) As String

Dim i As Integer

ByteToString = ""
i = 0

Do While ByteArray(i) <> 0
   ByteToString = ByteToString & Chr(ByteArray(i))
   i = i + 1
Loop

End Function

4. Allgemein/toTime
'Zeitformat
Private Function toTime(ByVal x As Single) As String

toTime = Format(x Mod 60, "00")
toTime = ":" & toTime
x = x \ 60
toTime = Format(x Mod 60, "00") & toTime
toTime = ":" & toTime
x = x \ 60
toTime = x & toTime

End Function

5. Allgemein/CheckRASConnections
'Prüfen der Verbindungen
Sub CheckRASConnections()

Dim i As Long
Dim RasConn(255) As RasConn
Dim structSize As Long
Dim ConnectionsCount As Long
Dim ret As Long
Static LastTime As Single
Dim ElapsedTime As Single

If LastTime = 0 Then LastTime = Timer

RasConn(0).dwSize = RAS_RASCONNSIZE
structSize = RAS_MAXENTRYNAME * RasConn(0).dwSize
ret = RasEnumConnections(RasConn(0), structSize, ConnectionsCount)
ElapsedTime = Timer - LastTime

If ElapsedTime < 0 Then ElapsedTime = 0

If ret = ERROR_SUCCESS Then
For i = 0 To ConnectionsCount - 1

On Error GoTo NewConnection

Form1.ListView1.ListItems("K" & RasConn(i).hRasConn).Tag = Form1.ListView1.ListItems("K" & RasConn(i).hRasConn).Tag + ElapsedTime
Form1.ListView1.ListItems("K" & RasConn(i).hRasConn).Text = ByteToString(RasConn(i).szEntryName) & "-" & toTime(Form1.ListView1.ListItems("K" & RasConn(i).hRasConn).Tag)
GoTo NextConnection
NewConnection:

Form1.ListView1.ListItems.Add , "K" & RasConn(i).hRasConn, ByteToString(RasConn(i).szEntryName)
Form1.ListView1.ListItems("K" & RasConn(i).hRasConn).Tag = 0
NextConnection:

Next
End If

LastTime = Timer

End Sub

6. Funktionsaufruf Timer1.Timer
CheckRASConnections

Tipp-Download

Quelle :

Zurück zur Übersichtsseite