Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0110: Absoluten Pfad eines Netzlaufwerks erfassen

 von 

Beschreibung 

Netzlaufwerke lassen sich sowohl Programmtechnisch als auch durch den Explorer etc. erstellen um an den absoluten Pfad einer solchen Verbindung zu gelangen muß die 'WNetGetConnection' in der 'mpr.dll' bemüht werden.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

GetDriveTypeA (GetDriveType), WNetGetConnectionA (WNetGetConnection)

Download:

Download des Beispielprojektes [2,66 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Kombinationsliste "Combo1"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label1"


'Vielen Dank an Heino Schlet

Option Explicit

Private Declare Function GetDriveType Lib "kernel32" _
        Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Declare Function WNetGetConnection Lib "mpr.dll" _
        Alias "WNetGetConnectionA" (ByVal lpszLocalName _
        As String, ByVal lpszRemoteName As String, _
        cbRemoteName As Long) As Long

Const DRIVE_UNKNOWN = 0
Const DRIVE_NOT_FOUND = 1
Const DRIVE_REMOVABLE = 2
Const DRIVE_FIXED = 3
Const DRIVE_REMOTE = 4
Const DRIVE_CDROM = 5
Const DRIVE_RAMDISK = 6

Const WN_NO_ERROR = 0
Const WN_BAD_DEVICE = 1200&
Const WN_CONNECTION_UNAVAILABLE = 1201&
Const WN_EXTENDED_ERROR = 1208&
Const WN_MORE_DATA = 234
Const WN_NOT_SUPPORTED = 50&
Const WN_NO_NET_OR_BAD_PATH = 1203&
Const WN_NO_NETWORK = 1222&
Const WN_NOT_CONNECTED = 2250&

Private Sub Combo1_Click()
  Label2.Caption = GetUNCName(Combo1.Text)
End Sub

Private Sub Form_Load()
  Dim i%, Drive As String * 2

    For i = 0 To 25
      Drive = Chr$(i + 65) & ":"
      Select Case GetDriveType(Drive)
        Case DRIVE_REMOTE
          Combo1.AddItem Drive
        Case Else
      End Select
    Next i
End Sub

Function GetUNCName(Drive$) As String
  Dim Result&, Buffer$, l&, ErrText$
  
  Buffer = Space(255)
  l = Len(Buffer)
  Result = WNetGetConnection(Drive, Buffer, l)

  Select Case Result
    Case WN_BAD_DEVICE:             ErrText = "Kein Netzlaufwerk"
    Case WN_CONNECTION_UNAVAILABLE: ErrText = "Verb. nicht mögl."
    Case WN_EXTENDED_ERROR:         ErrText = "Schwerer Fehler"
    Case WN_MORE_DATA:              ErrText = "Mehr Daten"
    Case WN_NOT_SUPPORTED:          ErrText = "Nicht unterstützt"
    Case WN_NO_NET_OR_BAD_PATH:     ErrText = "Pfad nicht vorhanden"
    Case WN_NO_NETWORK:             ErrText = "Netzw. n. verfügbar"
    Case WN_NOT_CONNECTED:          ErrText = "Nicht verbunden"
    Case Else:                      ErrText = ""
  End Select
  
  If ErrText <> "" Then
    MsgBox ErrText
  Else
    GetUNCName = Left$(Buffer, l)
  End If
End Function
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Thorsten Göbel am 21.11.2001 um 11:31

Kompliment,
Inhaltlich (Bsp) eine der besten VB-Seiten die ich kenne.

Kommentar von Uwe am 23.01.2001 um 08:38

Hallo
Ich habe einen UNC-Pfad und benötige das Laufwerk.Habe schon bei Tip 110 den LocalName ein Buffer verpaßt und
den UNC-Pfad an
RemoteName übergeben.
Funktioniert aber
nicht ???
Danke im voraus Uwe