Tipp 5.21 - DFÜ-Verbindungen ermitteln

Wie kann ich die verfügbare DFÜ-Verbindungen ermitteln?

Mit dieser Funktion können Sie die verfügbare DFÜ-Verbindungen ermitteln. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: RasEnumEntries - RAS_ENTRYNAME

Beispiel:

Option Explicit
 
Public Const RAS_MAXENTRYNAME     As Long = 256
 
Public Type RAS_ENTRYNAME
  dwSize                          As Long
  szEntryName(RAS_MAXENTRYNAME)   As Byte
End Type
 
Public Declare Function RasEnumEntries _
    Lib "RasApi32.dll" Alias _
    "RasEnumEntriesA" (ByVal Reserved As String, _
    ByVal lpszPhonebook As String, _
    lprasentryname As Any, _
    lpcb As Long, _
    lpcEntries As Long) As Long
 
Public Function CountDFUEConnections( _
                asNames() As String) _
                As Long
  '// -----------------------------------------------------
  '// Methode:   | Ermittelt alle verfügb. DFUE-Verbindg.
  '// -----------------------------------------------------
  '// Parameter: | asNames - Array für die DFUE-Verbindg.
  '// -----------------------------------------------------
  '// Rückgabe:  | Anzahl gefundener DFUE-Verbindungen
  '// -----------------------------------------------------
  '// Autor:     | Stefan Kulpa
  '//            | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispiel:
  '// Dim asNames() As String
  '// Dim lCount    As Long
  '// If CountDFUEConnections(asNames) > 0 Then
  '//     For lCount = LBound(asNames) To UBound(asNames)
  '//         Debug.Print asNames(lCount)
  '//     Next
  '// End If
  '// -----------------------------------------------------
  Dim lEntries                As Long
  Dim lCount                  As Long
  Dim lSize                   As Long
  Dim lLoop                   As Long
  Dim sName                   As String
  Dim auRasEntryNames(255)    As RAS_ENTRYNAME
 
  lCount = 0
  Erase asNames
  auRasEntryNames(0).dwSize = 264
  lSize = 256 * auRasEntryNames(0).dwSize
  Call RasEnumEntries(vbNullString, _
      vbNullString, _
      auRasEntryNames(0), _
      lSize, _
      lEntries)
  For lLoop = 0 To lEntries - 1
    sName = StrConv(auRasEntryNames(lLoop).szEntryName(), _
        vbUnicode)
    lCount = lCount + 1
    ReDim Preserve asNames(lCount)
    asNames(lCount) = _
        VBA.Left(sName, VBA.InStr(sName, vbNullChar) - 1)
  Next lLoop
  CountDFUEConnections = lCount
 
End Function