二つのファイル名の相対パスを取得          <TOP>


PathRelativePathTo 二つのファイル名の相対パスを取得

FILE_ATTRIBUTE_DIRECTORY(&H10) ディレクトリ属性
FILE_ATTRIBUTE_NORMAL(&H80) 他のファイル属性を持たない
 

 

'================================================================
'= 二つのファイル名の相対パスを取得
'=    (PathRelativePathTo.bas)
'================================================================
#include "Windows.bi"

#define FILE_ATTRIBUTE_DIRECTORY &H10   'ディレクトリ属性
#define FILE_ATTRIBUTE_NORMAL &H80      '他のファイル属性を持たない

' 二つのパス間の相対パスを取得
Declare Function Api_PathRelativePathTo& Lib "shlwapi" Alias "PathRelativePathToA" (ByVal pszPath$, ByVal pszFrom$, ByVal dwAttrFrom&, ByVal pszTo$, ByVal dwAttrTo&)

Var Shared Edit1 As Object
Var Shared Edit2 As Object
Var Shared Text1 As Object
Var Shared Button1 As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 12
Edit2.Attach GetDlgItem("Edit2") : Edit2.SetFontSize 12
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 12
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Edit1.SetWindowText "C:\Windows\System"
    Edit2.SetWindowText "C:\Windows\Profiles\Desktop\Test.txt"
    Text1.SetWindowText ""
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var strPath As String
    Var Ret As Long

    strPath = Space$(256)
    
    Ret = Api_PathRelativePathTo(strPath, Edit1.GetWindowText, FILE_ATTRIBUTE_DIRECTORY, Edit2.GetWindowText, FILE_ATTRIBUTE_NORMAL)

    Text1.SetWindowText strPath
End Sub

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