VB6
相対パスを絶対パスに変換する
以下の関数AbsolutePathを使用すると相対パスを絶対パスに変換することができる。たとえば、次のように使用する。
MsgBox AbsolutePath("C:\Windows\System32\..\Notepad.exe")
この場合、は C:\Windows\Notepad.exe と表示される。ファイル名だけではなくフォルダ名も変換することができる。
メモ:ここでは相対パスとはパス文字列中に \..\ が含まれているパスを言います。
Private
Declare Function PathCanonicalize Lib
"shlwapi.dll" Alias "PathCanonicalizeA" (ByVal
lpszDst As String,
ByVal lpszSrc As String)
As Long Public Const MAX_PATH = 260 'パス名の最大長 '■AbsolutePath '■機能:相対パスを絶対パスに変換する '■ 引数が相対パスでない場合はそのまま引数を返す。 '■ 相対パスか否かの判断は "\..\" が含まれるかどうか。 Public Function AbsolutePath(Path As String) As String Dim Buffer As String * MAX_PATH If InStr(1, Path, "\..\") = 0 Then AbsolutePath = Path Exit Function End If Buffer = String(Len(Buffer), vbNullChar) ' 絶対パスを受け取る文字列を初期化 Call PathCanonicalize(Buffer, Path) AbsolutePath = Left(Buffer, InStr(Buffer, vbNullChar) - 1) End Function |