Share via


PathRelativePathToW-Funktion (shlwapi.h)

Erstellt einen relativen Pfad von einer Datei oder einem Ordner zu einer anderen.

Syntax

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

Parameter

[out] pszPath

Typ: LPTSTR

Ein Zeiger auf eine Zeichenfolge, die den relativen Pfad empfängt. Dieser Puffer muss mindestens MAX_PATH Zeichen groß sein.

[in] pszFrom

Typ: LPCTSTR

Ein Zeiger auf eine NULL-endende Zeichenfolge mit maximaler Länge MAX_PATH, die den Pfad enthält, der den Anfang des relativen Pfads definiert.

[in] dwAttrFrom

Art: DWORD

Die Dateiattribute von pszFrom. Wenn dieser Wert FILE_ATTRIBUTE_DIRECTORY enthält, wird pszFrom als Verzeichnis angenommen. Andernfalls wird pszFrom als Datei angenommen.

[in] pszTo

Typ: LPCTSTR

Ein Zeiger auf eine null-endende Zeichenfolge mit maximaler Länge MAX_PATH, die den Pfad enthält, der den Endpunkt des relativen Pfads definiert.

[in] dwAttrTo

Art: DWORD

Die Dateiattribute von pszTo. Wenn dieser Wert FILE_ATTRIBUTE_DIRECTORY enthält, wird pszTo als verzeichnis angenommen. Andernfalls wird pszTo als Datei angenommen.

Rückgabewert

Typ: BOOL

Gibt TRUE zurück, wenn erfolgreich, andernfalls FALSE .

Hinweise

Diese Funktion verwendet ein Paar von Pfaden und generiert einen relativen Pfad von einem zum anderen. Die Pfade müssen nicht voll qualifiziert sein, aber sie müssen ein gemeinsames Präfix aufweisen, andernfalls schlägt die Funktion fehl und gibt FALSE zurück.

Beispiel: Der Ausgangspunkt pszFrom lautet "c:\FolderA\FolderB\FolderC", und der Endpunkt pszTo lautet "c:\FolderA\FolderD\FolderE". PathRelativePathTo gibt den relativen Pfad von pszFrom zu pszTo als "....\FolderD\FolderE" zurück. Sie erhalten das gleiche Ergebnis, wenn Sie pszFrom auf "\FolderA\FolderB\FolderC" und pszTo auf "\FolderA\FolderD\FolderE" festlegen. Auf der anderen Seite verwenden "c:\FolderA\FolderB" und "a:\FolderA\FolderD" kein gemeinsames Präfix, und die Funktion schlägt fehl. Beachten Sie, dass "\" nicht als Präfix gilt und ignoriert wird. Wenn Sie pszFrom auf "\FolderA\FolderB" und pszTo auf "\FolderC\FolderD" festlegen, schlägt die Funktion fehl.

Beispiele

#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

Hinweis

Der shlwapi.h-Header definiert PathRelativePathTo als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional, Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shlwapi.h
Bibliothek Shlwapi.lib
DLL Shlwapi.dll (Version 4.71 oder höher)