ロングパス名・ショートパス名の相互変換 <TOP>
ロングパス名からショートパス名へ、ショートパス名からロングパス名へ相互変換します。
GetShortPathName ファイルの短い形式のパス名を取得
GetLongPathName ロングパス名を取得
「開く(Long → Short)」でファイルを選択すると、ショート形式で表示されます。
念のため「クリア」でロングファイル名を消去し、「Short → Long」をクリックするとロング形式のパス名が表示されます。
ShortFileName欄に適当なショート形式パス名を入力後、「Short → Long」をクリックするとそのパスが存在した場合、ロング形式のパス名が表示されます。
'================================================================ '= ロングパス名・ショートパス名相互変換
'= (LongShortFileName.bas) '================================================================ #include "Windows.bi" ' ファイルの短い形式のパス名を取得 Declare Function Api_GetShortPathName& Lib "Kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath$, ByVal lpszShortPath$, ByVal lBuffer&) ' ロングパス名を取得 Declare Function Api_GetLongPathName& Lib "Kernel32" Alias "GetLongPathNameA" (ByVal lpszShortPath$, ByVal lpszLongPath$, ByVal cchBuffer&) #define MAX_PATH 260 Var Shared Edit1 As Object Var Shared Text(2) As Object Var Shared Button(2) As Object Edit1.Attach getDlgItem("Edit1") : EDit1.SetFontSize 14 For i = 0 To 2 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) Text(i).SetFontSize 14 Button(i).Attach GetDlgItem("Button" & Trim$(Str$(i + 1))) Button(i).SetFontSize 14 Next '================================================================ '= '================================================================ Declare Function GetShortName(sLongFileName As String) As String Function GetShortName(sLongFileName As String) As String Var sShortPathName As String Var iLen As Integer Var Ret As Long 'バッファの設定 sShortPathName = Space$(260) iLen = Len(sShortPathName) 'ファンクションコール Ret = Api_GetShortPathName(sLongFileName, sShortPathName, iLen) '必要な長さを切り取る GetShortName = Left$(sShortPathName, Ret) End Function '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var FileName As String Var sFile As String FileName = WinOpenDlg("ファイルのオープン", "*.*", "全てのファイル(*.*)", 0) If FileName <> Chr$(&H1B) Then Text(2).SetWindowText FileName Edit1.SetWindowText GetShortName(FileName) End If End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Text(2).SetWindowText "" End Sub '================================================================ '= '================================================================ Declare Sub Button3_on edecl () Sub Button3_on() Var sLongPathName As String Var iLen As Integer Var Ret As Long 'バッファの設定 sLongPathName = Space$(260) iLen = Len(sLongPathName) 'ファンクションコール Ret = Api_GetLongPathName(Edit1.GetWindowText, sLongPathName, iLen) '必要な長さを切り取る Text(2).SetWindowText Left$(sLongPathName, Ret) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End