Home > Visual Basic Classic > Dateisystem > Kurze Dateinamen in lange Dateinamen umwandeln

Kurze Dateinamen in lange Dateinamen umwandeln

Veröffentlicht am 28.08.2008 von Sebastian Krogolewski

Artikelinformationen

Sprache:
Visual Basic 6
Datenbank:
keine

Artikel speichern

del.icioMister WongGoogleLinkarenaYiggSpurlFurl

Artikel bewerten

Bewertng:4.50 / 5 (2 mal bewertet)

In der Windows Welt kennt man Mittlerweile alle Dateinamen in der Langform C:\Dokumente und Einstellungen\Testbenutzer\Eigene Dateien\Textdatei.txt, aber es gibt noch API Funktionen und ältere Anwendungen welche mit der kurzform C:\DOKUME~1\TESTBE~1\EIGENE~1\TEXTDA~1.TXT arbeiten. Windows bietet die API Funktion GetLongPathNameA bzw. GetLongPathNameW aus der Kernel32.Dll an um diese Pfadangaben von der Kurzform in die Langform zu konvertieren.

 

Einbinden der Win API Funktion GetLongPathNameA als GetShortPathName aus der Kernel32.Dll.

1
2
3
Private Declare Function GetLongPathName Lib "kernel32" Alias "GetLongPathNameA" ( _
    ByVal lpszShortPath As String, ByVal lpszLongPath As String, _
    ByVal cchBuffer As Long) As Long

 

GetLongPathName erwartet 3 Parameter:

lpszShortPath: Pfad welcher in die Langform konvertiert werden soll.

lpszLongPath: Zeiger auf Speicherbereich in dem der Pfad in langform zurückgeliefert werden soll.

cchBuffer: Größe des Speichers auf den lpszLongPath zeigt.

 

Rückgabewert:

Bei Erfolg: tatsächliche länge des konvertierten Pfades in langform ohne das Terminierungseichen.

Bei Fehlschlag: Größe des benötigten Speicherbereichs inkl. Terminierungszeichen oder 0 bei Fehlern wie Datei exestiert nicht, aber mit GetLastError kann man hierzu genauere Information abrufen.

 

Funktion mit Aufruf von GetLongPathName und als Funktionsergebnis der lange Dateiname.

VB Funktion
1
2
3
4
56
7
8
9
1011
12
13
Public Function GetLongName(ByVal ShortName As String) As String
Dim strLong As String
Dim strLen As Long
 
strLen = GetLongPathName(ShortName, strLong, Len(strLong))If (strLen > 0) Then
    strLong = String$(strLen, 0)
    strLen = GetLongPathName(ShortName, strLong, Len(strLong))
    If (strLen = Len(strLong) - 1) Then
        GetLongName = Left$(strLong, strLen)    End If
End If
End Function

 

Beispiel Aufruf
1
GetLongName("C:\Dokume~1\Lordcroc\Desktop\test.txt")

Downloads

Suchbegriffe

VB6, Visual Basic, GetLongPathName, GetLongPathNameA, GetLongPathNameW

Suche