UrlCombineA 関数 (shlwapi.h)
相対 URL とそのベースを指定すると、正規形式の URL が返されます。
構文
LWSTDAPI UrlCombineA(
[in] PCSTR pszBase,
[in] PCSTR pszRelative,
[out, optional] PSTR pszCombined,
[in, out] DWORD *pcchCombined,
DWORD dwFlags
);
パラメーター
[in] pszBase
種類: PCTSTR
ベース URL を含む最大長INTERNET_MAX_URL_LENGTHの null で終わる文字列へのポインター。
[in] pszRelative
種類: PCTSTR
相対 URL を含む最大長INTERNET_MAX_URL_LENGTHの null で終わる文字列へのポインター。
[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)
安全でない文字をそのエスケープ シーケンスに置換します。 安全でない文字は、インターネット経由で転送中に変更される可能性のある文字であり、(<、、"、 >#、{、}、|、^、~、[、]、および ') 文字が含まれます。 このフラグは、あいまいな 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)
2 つの例外を含む、URL に含まれるエスケープ シーケンスのエスケープを解除します。 '?' と '#' のエスケープ シーケンスはエスケープされません。 URL_ESCAPE_XXX フラグの 1 つが設定されている場合、2 つの URL は最初にエスケープ解除され、次に結合されてからエスケープされます。
URL_ESCAPE_AS_UTF8 (0x00040000)
Windows 7 以降。 すべての非 ASCII 文字を UTF-8 に相当するものとしてパーセントエンコードします。
戻り値
型: HRESULT
次のような標準 COM エラー コードを返します。
リターン コード | 説明 |
---|---|
|
pszCombined は 、結合された URL を含む文字列を指します。 pcchCombined の値は、終端の NULL 文字をカウントせず、文字列内の文字数に設定されます。 |
|
バッファーが小さすぎます。 pcchCombined の値は、バッファーに含める必要がある最小文字数 (終端の NULL 文字を含む) に設定されます。 |
注釈
スラッシュ間の項目は階層識別子として扱われます。最後の項目は、ドキュメント自体を指定します。 さらに項目を追加するには、ドキュメント名の後にスラッシュ (/) を入力する必要があります。それ以外の場合、 UrlCombine は 1 つのドキュメントを別のドキュメントと交換します。 例:
hRetVal = UrlCombine(TEXT("http://xyz/test/abc"),
TEXT("bar"),
lpszCombined,
&dwLength, 0);
上記のコードは URL を返します http://xyz/test/bar. 結合された URL を にする場合は http://xyz/test/abc/bar、 UrlCombine の次の呼び出しを使用します。
hRetVal = UrlCombine(TEXT("http://xyz/test/abc/"),
TEXT("bar"),
lpszCombined,
&dwLength, 0);
URL 文字列に '/.. が含まれている場合。/' または '/./' の 場合、UrlCombine は通常、文字を URL 階層のナビゲーションとして扱います。 関数は、URL を組み合わせる前に簡略化します。 たとえば、"/hello/cruel/../world" は "/hello/world" に簡略化されています。 URL_DONT_SIMPLIFY フラグが dwFlags で設定されている場合、関数は URL を簡略化しません。 この場合は、"/hello/cruel/../world" はそのままです。
注意
shlwapi.h ヘッダーは、URLCombine をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional、Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shlwapi.h |
Library | Shlwapi.lib |
[DLL] | Shlwapi.dll (バージョン 5.0 以降) |