Функция PathRelativePathTo

Declare Function PathRelativePathTo Lib "shlwapi.dll" Alias "PathRelativePathToA" (ByVal pszPath As String, ByVal pszFrom As String, ByVal dwAttrFrom As Long, ByVal pszTo As String, ByVal dwAttrTo As Long) As Long
PathRelativePathTo создает относительный путь от одного файла или папки к другому. Эта функция берет пару путей и генерирует относительный путь. Пути не должны быть полностью-квалифицированы, но обязательно должны иметь общий префикс. Например, пусть pszFrom, будет "c:\FolderA\FolderB\FolderC", а pszTo будет "c:\FolderA\FolderD\FolderE". PathRelativePathTo возвратит относительный путь от pszFrom до pszTo как: " ..\ ..\FolderD\FolderE ". Вы получите тот же самый результат, если Вы устанавливаете pszFrom в "\FolderA\FolderB\FolderC" и pszTo к "\FolderA\FolderD\FolderE". С другой стороны, "c:\FolderA\FolderB" и " a:\FolderA\FolderD не используют общий префикс, и функция будет терпеть неудачу. Обратите внимание, что " \\ " не рассматривается префиксом и игнорируется. Если Вы устанавливаете pszFrom в " \\ FolderA\FolderB ", и pszTo к " \\ FolderC\FolderD ", функция будет терпеть неудачу

Возвращаемое значение

В случае успеха функция возвращает True, в противном случае возвращается False

Параметры

pszPath
Строка, содержащая относительный путь. Выделите ей буфер достаточной длины
pszFrom
Строка, содержащая путь, который определяет начало относительного пути
dwAttrFrom
Атрибут файла pszFrom. Если это значение содержит FILE_ATTRIBUTE_DIRECTORY, то pszFrom считается папкой, иначе pszFrom является файлом
pszTo
Строк, содержащая путь, который определяет оконечную точку относительного пути
dwAttrTo
Атрибут файла pszFrom. Если это значение содержит FILE_ATTRIBUTE_DIRECTORY, то pszTo считается папкой, иначе pszTo является файлом

Константы

Const FILE_ATTRIBUTE_DIRECTORY = &H10

Пример

' Поместите на форме три TextBox,
' в которых вы будет вводить пути
Dim relpath As String

' Создаем буфер
relpath = Space(260)
PathRelativePathTo relpath, txtFrom.Text, _
   FILE_ATTRIBUTE_DIRECTORY, _
   txtTo.Text, FILE_ATTRIBUTE_DIRECTORY

txtRelative.Text = Left(relpath, InStr(relpath, Chr(0)) - 1)

Категория

Shlwapi