次の方法で共有


PathRelativePathToA 関数 (shlwapi.h)

あるファイルまたはフォルダーから別のファイルまたはフォルダーへの相対パスを作成します。

構文

BOOL PathRelativePathToA(
  [out] LPSTR  pszPath,
  [in]  LPCSTR pszFrom,
  [in]  DWORD  dwAttrFrom,
  [in]  LPCSTR pszTo,
  [in]  DWORD  dwAttrTo
);

パラメーター

[out] pszPath

種類: LPTSTR

相対パスを受け取る文字列へのポインター。 このバッファーのサイズは、少なくともMAX_PATH文字である必要があります。

[in] pszFrom

種類: LPCTSTR

相対パスの開始を定義するパスを含む最大長MAX_PATHの null で終わる文字列へのポインター。

[in] dwAttrFrom

型: DWORD

pszFrom のファイル属性。 この値に FILE_ATTRIBUTE_DIRECTORY が含まれている場合、pszFrom はディレクトリであると見なされます。それ以外の場合、pszFrom はファイルであると見なされます。

[in] pszTo

種類: LPCTSTR

相対パスのエンドポイントを定義するパスを含む最大長MAX_PATHの null で終わる文字列へのポインター。

[in] dwAttrTo

型: DWORD

pszTo のファイル属性。 この値にFILE_ATTRIBUTE_DIRECTORYが含まれている場合、 pszTo はディレクトリであると見なされます。それ以外の場合、 pszTo はファイルであると見なされます。

戻り値

種類: BOOL

成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。

注釈

この関数は、パスのペアを受け取り、一方から他方への相対パスを生成します。 パスは完全修飾である必要はありませんが、共通のプレフィックスを持っている必要があります。または、関数が失敗して FALSE を返します。

たとえば、開始点 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" に設定すると、関数は失敗します。

#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

Note

shlwapi.h ヘッダーは、PathRelativePathTo をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional、Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shlwapi.h
Library Shlwapi.lib
[DLL] Shlwapi.dll (バージョン 4.71 以降)