Lange Dateinamen in kurze Dateinamen umwandeln
Veröffentlicht am 24.07.2008 von Sebastian Krogolewski
In der Windows Welt kennt man mittlerweile alle Dateinamen in der Langform C:\Dokumente und Einstellungen\Testbenutzer\Eigene Dateien\Textdatei.txt. Dies kann eventuell mit älteren Anwendungen, die noch mit der Kurzform C:\DOKUME~1\TESTBE~1\EIGENE~1\TEXTDA~1.TXT arbeiten, zu Problemen führen. Diese Probleme kann man geschickt umgehen, indem man mit der Win API Funktion GetShortPathNameA bzw. GetShortPathNameW aus der Kernel32.Dll den Dateinamen in diese Kurzfom umwandelt.
MAX_PATH Konstante definieren:
1 | Private Const MAX_PATH As Long = 260 |
Einbinden der Win API Funktion GetShortPathNameA als GetShortPathName aus der Kernel32.Dll.
1 2 3 | Private Declare Function GetShortPathName Lib "kernel32" Alias _ "GetShortPathNameA" (ByVal lpszLongPath As String, _ ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long |
Funktion mit Aufruf von GetShortPathName und als Funktionsergebnis wird der kurze Dateiname zurückgeliefert.
VB Funktion
1 2 3 4 56 7 8 9 1011 12 13 14 | Public Function GetShortName(ByVal longName As String) As String Dim strShort As String Dim strLen As Long strShort = String$(MAX_PATH, 0)strLen = GetShortPathName(LongName, strShort, Len(strShort)) If (strLen > 0) Then strShort = String$(strLen, 0) strLen = GetLongPathName(LongName, strShort, Len(strShort)) If (strLen = Len(strShort) - 1) Then GetShortName = Left$(strShort, strLen) End If End If End Function |
Beispiel Aufruf
1 | GetShortName("C:\Dokumente und Einstellungen\Testbenutzer\Eigene Dateien\Textdatei.txt") |
Downloads
Suchbegriffe
Visual Basic, GetShortPathName, GetShortPathNameA, GetShortPathNameW, Kernel32.Dll
10g 11g Anwendung starten API Dateinamen umwandeln GetProcAddress GetTempPath GetTempPathA GetVolumeInformation GetVolumeInformationA GetVolumeInformationW Kernel32.Dll kurzer Dateiname MAX_COMPUTERNAME_LENGTH MAX_PATH Microsoft Scripting Runtime Oracle Scripting.FileSystemObject SetForegroundWindow Shell Shell Befehl Shell32.Dll Shlwapi.Dll Temp User32.Dll






