VB 5/6-Tipp 0110: Absoluten Pfad eines Netzlaufwerks erfassen
von Heino Schlet
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: | Verwendete API-Aufrufe: GetDriveTypeA (GetDriveType), WNetGetConnectionA (WNetGetConnection) | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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