共用方式為


PathRelativePathToW 函式 (shlwapi.h)

建立從一個檔案或資料夾到另一個檔案的相對路徑。

語法

BOOL PathRelativePathToW(
  [out] LPWSTR  pszPath,
  [in]  LPCWSTR pszFrom,
  [in]  DWORD   dwAttrFrom,
  [in]  LPCWSTR pszTo,
  [in]  DWORD   dwAttrTo
);

參數

[out] pszPath

類型:LPTSTR

接收相對路徑之字串的指標。 此緩衝區的大小必須至少MAX_PATH個字元。

[in] pszFrom

類型:LPCTSTR

長度上限之 null 終止字串的指標,MAX_PATH包含定義相對路徑開頭的路徑。

[in] dwAttrFrom

類型:DWORD

pszFrom的檔案屬性。 如果此值包含FILE_ATTRIBUTE_DIRECTORY,假設 pszFrom 為目錄 ;否則,假設 pszFrom 為檔案。

[in] pszTo

類型:LPCTSTR

長度上限之 null 終止字串的指標MAX_PATH,其中包含定義相對路徑端點的路徑。

[in] dwAttrTo

類型:DWORD

pszTo的檔案屬性。 如果此值包含 FILE_ATTRIBUTE_DIRECTORY,假設 pszTo 為目錄 pszTo;否則,假設 pszTo 為檔案。

傳回值

類型:BOOL

如果成功,則傳回 true true,否則會 傳回 false

言論

此函式會採用一組路徑,併產生從一個路徑到另一個路徑的相對路徑。 路徑不一定要完整,但必須有通用前置詞,否則函式將會失敗並傳回 FALSE

例如,讓起點 pszFrom為 “c:\FolderA\FolderB\FolderC”,而結束點 pszTo為 “c:\FolderA\FolderD\FolderE”。 PathRelativePathTo 會將 pszFrom 的相對路徑傳回為 “....\FolderD\FolderE” pszTo。 如果您將 pszFrom 設為 “\FolderA\FolderB\FolderC”,並將 pszTo 為 “\FolderA\FolderD\FolderE” ,您就會得到相同的結果。 另一方面,“c:\FolderA\FolderB” 和 “a:\FolderA\FolderD 不會共用一般前置詞,而且函式將會失敗。 請注意,“\” 不會被視為前置詞,而且會被忽略。 如果您將 pszFrom 設定為 “\FolderA\FolderB”,並將 pszTo 設為 “\FolderC\FolderD”,函式將會失敗。

例子

#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"

void main(void)
{
    char szOut[MAX_PATH] = "";
    char szFrom[ ] = "c:\\a\\b\\path";
    char szTo[ ] = "c:\\a\\x\\y\\file";

    cout  <<  "The relative path is relative from: ";
    cout  <<  szFrom;
    cout  <<  "\n";

    cout  <<  "The relative path is relative to: ";
    cout  <<  szTo;
    cout  <<  "\n";

    PathRelativePathTo(szOut,
                       szFrom,
                       FILE_ATTRIBUTE_DIRECTORY,
                       szTo,
                       FILE_ATTRIBUTE_NORMAL);

    cout  <<  "The relative path is: ";
    cout  <<  szOut;
    cout  <<  "\n";
}

OUTPUT:
==================
The relative path is relative from: c:\a\b\path
The relative path is relative to: c:\a\x\y\file
The relative path is: ..\..\x\y\file

注意

shlwapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 PathRelativePathTo 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional、Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 shlwapi.h
連結庫 Shlwapi.lib
DLL Shlwapi.dll (4.71 版或更新版本)