共用方式為


UrlCombineW 函式 (shlwapi.h)

當提供相對 URL 及其基底時,會以標準形式傳回 URL。

語法

LWSTDAPI UrlCombineW(
  [in]            PCWSTR pszBase,
  [in]            PCWSTR pszRelative,
  [out, optional] PWSTR  pszCombined,
  [in, out]       DWORD  *pcchCombined,
                  DWORD  dwFlags
);

參數

[in] pszBase

類型:PCTSTR

包含基底 URL 之最大長度之 null 終止字串的指標INTERNET_MAX_URL_LENGTH。

[in] pszRelative

類型:PCTSTR

包含相對 URL 之最大長度之 null 終止字串的指標INTERNET_MAX_URL_LENGTH。

[out, optional] pszCombined

類型:PTSTR

緩衝區的指標,當此函式成功傳回時,會收到包含合併 URL 的 Null 終止字串。

[in, out] pcchCombined

類型:DWORD*

項目上設定為 pszCombined 緩衝區 字元數的值指標。 當函式成功傳回時,值取決於函式是否成功或傳回E_POINTER。 對於其他傳回值,這個參數的值毫無意義。

dwFlags

類型:DWORD

指定 URL 如何轉換成標準格式的旗標。 可以合併下列旗標。

URL_DONT_SIMPLIFY (0x08000000)

處理 『/./』 和 『/.。/' 在 URL 字串中做為常值字元,而不是導覽的速記。 如需進一步的討論,請參閱。

URL_ESCAPE_PERCENT (0x00001000)

將任何出現的 『%』 轉換成逸出序列。

URL_ESCAPE_SPACES_ONLY(0x04000000)

將空格取代為逸出序列。 此旗標的優先順序高於 URL_ESCAPE_UNSAFE,但不適用於不透明的 URL。

URL_ESCAPE_UNSAFE (0x20000000)

將 unsafe 字元取代為逸出序列。 不安全字元是在因特網傳輸期間可能改變的字元,包括 (<、>、“、#、{、}、|、^、~、[、]、 和 ') 字元。 此旗標適用於所有 URL,包括不透明 URL。

URL_NO_META

定義為與 URL_DONT_SIMPLIFY相同。

URL_PLUGGABLE_PROTOCOL (0x40000000)

根據 W3C 規格,結合 URL 與用戶端定義的插入式通訊協定。 此旗標不適用於標準通訊協定,例如 ftp、HTTP、gopher 等等。 如果設定此旗標,UrlCombine 不會簡化 URL,因此不需要也設定 URL_DONT_SIMPLIFY

URL_UNESCAPE(0x10000000)

取消逸出 URL 包含的任何逸出序列,但有兩個例外狀況。 '?' 和 '#' 的逸出序列不會解除逸出。 如果同時設定其中一個URL_ESCAPE_XXX旗標,則兩個URL會先取消逸出,然後合併,然後逸出。

URL_ESCAPE_AS_UTF8 (0x00040000)

Windows 7 和更新版本。 將所有非 ASCII 字元的百分比編碼為其 UTF-8 對等專案。

傳回值

類型:HRESULT

傳回標準 COM 錯誤碼,包括下列專案。

傳回碼 描述
S_OK
pszCombined 指向包含合併 URL 的字串。 pcchCombined 的值會設定為字串中的字元數,而不會計算結束 NULL 字元。
E_POINTER
緩衝區太小。 pcchCombined 的值會設定為緩衝區必須包含的字元數下限,包括終止 NULL 字元。

言論

斜線之間的專案會被視為階層式標識符;最後一個專案會指定檔本身。 您必須在檔名稱後面輸入斜線 (/) 以附加更多專案;否則,UrlCombine 交換另一份檔。 例如:


hRetVal = UrlCombine(TEXT("http://xyz/test/abc"), 
                     TEXT("bar"), 
                     lpszCombined, 
                     &dwLength, 0);

上述程式代碼會傳回 URL http://xyz/test/bar. 如果您要將合併的網址 http://xyz/test/abc/bar,請使用下列呼叫來 UrlCombine


hRetVal = UrlCombine(TEXT("http://xyz/test/abc/"), 
                     TEXT("bar"), 
                     lpszCombined, 
                     &dwLength, 0);

如果 URL 字串包含 '/.。/' 或 '/./',UrlCombine 通常會將字元視為表示在 URL 階層中流覽。 函式會在合併 URL 之前簡化 URL。 例如,“/hello/cruel/.。/world“ 已簡化為 ”/hello/world“。 如果在 dwFlags中設定 URL_DONT_SIMPLIFY 旗標,則函式不會簡化 URL。 在此情況下,“/hello/cruel/.。/world“ 已保留為 。

注意

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

要求

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

另請參閱

處理統一資源定位器

UrlCanonicalize