次の方法で共有


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 エラー コードを返します。

リターン コード 形容
S_OK
pszCombined は、結合された URL を含む文字列を指します。 pcchCombined の値は文字列内の文字数に設定され、終端 NULL 文字はカウントされません。
E_POINTER
バッファーが小さすぎます。 pcchCombined の値は、終端の NULL 文字を含め、バッファーに格納できる必要がある最小文字数 設定されます。

備考

スラッシュ間の項目は階層識別子として扱われます。最後の項目は、ドキュメント自体を指定します。 さらに項目を追加するには、ドキュメント名の後にスラッシュ (/) を入力する必要があります。それ以外の場合 、UrlCombine 1 つのドキュメントを別のドキュメントと交換します。 例えば:


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

上記のコードは URL http://xyz/test/bar. を返します 結合された URL を する場合は、次の呼び出しを使用して UrlCombineを します。


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

URL 文字列に '/.. が含まれている場合。/' または '/./' 、UrlCombine は通常、URL 階層でナビゲーションを示したかのように文字を扱います。 この関数は、URL を組み合わせる前に簡略化します。 たとえば、"/hello/残酷/../world" は "/hello/world" に簡略化されています。 URL_DONT_SIMPLIFY フラグが dwFlags設定されている場合、この関数は URL を簡略化しません。 この場合、"/hello/残酷/../world" はそのままです。

手記

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

必要条件

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

関連項目

の一様なリソース ロケーターの処理

UrlCanonicalize