次の方法で共有


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

相対パスの開始を定義するパスを含む最大長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 への相対パスを返します。 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 プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして PathRelativePathTo を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional、Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー shlwapi.h
ライブラリ Shlwapi.lib
DLL Shlwapi.dll (バージョン 4.71 以降)