Sogenannte "UNC-Pfade" kommen immer dann ins Spiel, wenn Ressourcen im Netz (auf einem "File-Server") benutzt werden sollen. Einem öfter benötigtem Server-Verzeichnis wird der Einfachheit halber oft ein Laufwerk zugeordnet (z.B. als "Arbeitsgruppen-Laufwerk", im Beispiel W Nachfolgend werden zwei Funktionen vorgestellt, welche gerade die Umwandlung zwischen UNC- und Laufwerks-Pfad erlauben. Laufwerks- nach UNC-Pfad ' zunächst die benötigte API-Deklaratione Private Declare Function WNetGetConnectionA Lib "mpr.dll" ( _ ByVal lpszLocalName As String, _ ByVal lpszRemoteName As String, _ cbRemoteName As Long) As Long Die folgende Funktion nutzt die o.g. API-Routine, wobei der ggf. angehängte Pfad besonders behandelt wird. Wird ein unbekanntes Laufwerk angegeben, so wird eine entsprechende Fehlermeldung zurückgegeben (kann mit IgnoreErrors = True unterdrückt werden). Public Function UNCPath(ByVal Path As String, _ Optional IgnoreErrors As Boolean = False) As String Dim UNC As String * 512 If Len(Path) = 1 Then Path = Path & ":" If Right$(Path, 1) <> "\" Then Path = Path & "\" If WNetGetConnectionA(Left$(Path, 2), UNC, Len(UNC)) Then ' API-Routine gibt Fehler zurück: If IgnoreErrors Then UNCPath = Path Else Err.Raise 5 ' Invalid procedure call or argument End If Else ' Ergebnis zurückgeben: UNCPath = Left$(UNC, InStr(UNC, vbNullChar) - 1) _ & Mid$(Path, 3) End If End Function UNC- nach Laufwerks-Pfad ' zunächst die benötigten API-Deklarationen Private Declare Function GetLogicalDriveStringsA Lib "kernel32" ( _ ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long Public Function LogicalDrives() As Collection Dim s As String * 128 Dim i As Long ' API aufrufen: GetLogicalDriveStringsA Len(s), s i = InStr(s, vbNullChar & vbNullChar) ' Länge ' Collection füllen: Set LogicalDrives = New Collection For i = 1 To i Step 4 LogicalDrives.Add Mid$(s, i, 2) Next i End Function ' Ermittelt das Laufwerk für einen UNC-Pfad Public Function DrivePath(ByVal Path As String, _ Optional IgnoreErrors As Boolean = False) As String Dim Drive As Variant Dim UNC As String ' Alle Laufwerke durchsuchen: If Right$(Path, 1) <> "\" Then Path = Path & "\" For Each Drive In LogicalDrives <findfile.htm>() UNC = UNCPath(Drive, True) If InStr(1, Path, UNC, vbTextCompare) = 1 Then Exit For Next Drive If IsEmpty(Drive) Then ' Kein Laufwerk für UNC gefunden: If IgnoreErrors Then DrivePath = Path Else Err.Raise 5 'Invalid procedure call or argument End If Else ' Ergebnis zurückgeben: DrivePath = Drive & Mid$(Path, Len(UNC)) End If End Function Anmerkung: Dieser Tipp wurde bereits 14.792 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 25 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1534.50 EUR... Tipp des Monats Dietrich Herrmann Einsatz einer DimmingForm Es wird eine Form vorgestellt, mit deren Hilfe man den gesamten Bildschirm auf verschiedene Arten mit transparenter Farbe überdecken und nur eine eigene Form im Vordergrund zeigen kann. sevEingabe 2.0 ![]() Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||||||||



Laufwerks-Pfad nach UNC-Pfad und umgekehrt
. Dann kann z.B. statt mit der unübersichtlichen UNC-Notation \\FileSvr2\WebAG\Infos\ einfach über ein "virtuelles" Laufwerk zugegriffen werden: W:\Infos\


