ロングパス名からショートパス名へ変換          <TOP>


ロングパス名をショートパス名に変換します。

GetShortPathName ファイルの短い形式のパス名を取得

 

LongPathで与えられたパス名を短い形式のパス名ShortPathに変換します。LongPathに含まれるすべてのディレクトリ名も短い形式に変換されます。

LongPathで与えるパスは、長い形式のパス名でなくても良くパス名中の短い形式のディレクトリ名やファイル名の部分は、そのままShortPathに出力されます。

与えるパス名は、実際にディスク上に存在していなければなりません。

テストでは上部にエディットボックスを、下部にテキストボックスを配置しています。

変換結果

 

'================================================================
'= ロングパス名からショートパス名へ変換
'=    (GetShortPathName.bas)
'================================================================
#include "Windows.bi"

' ファイルの短い形式のパス名を取得
Declare Function Api_GetShortPathName& Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath$, ByVal lpszShortPath$, ByVal lBuffer&)

Var Shared Edit1 As Object
Var Shared Text(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
Next

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()

    Edit1.SetWindowText "C:\Documents and Settings\All Users\Application Data\"
End Sub

'================================================================
'=
'================================================================
Declare Function GetShortPath edecl (strFileName As String) As String
Function GetShortPath(strFileName As String) As String
    Var Ret As Long
    Var strPath As String

    strPath = String$(165, 0)
    Ret = Api_GetShortPathName(strFileName, strPath, 164)
    GetShortPath = Left$(strPath, Ret)
End Function

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var oPath As String
    Var sPath As String

    oPath = RTrim$(Edit1.GetWindowText)
    sPath = GetShortPath(oPath)

    Text(2).SetWindowText sPath
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End