GetThreadPreferredUILanguages 関数 (winnls.h)

現在のスレッドのスレッド優先 UI 言語を取得します。 詳細については、「 ユーザー インターフェイス言語管理」を参照してください。

構文

BOOL GetThreadPreferredUILanguages(
  [in]            DWORD   dwFlags,
  [out]           PULONG  pulNumLanguages,
  [out, optional] PZZWSTR pwszLanguagesBuffer,
  [in, out]       PULONG  pcchLanguagesBuffer
);

パラメーター

[in] dwFlags

言語形式とフィルター処理を識別するフラグ。 次のフラグは、スレッド優先 UI 言語に使用する言語形式を指定します。 フラグは相互に排他的であり、既定値はMUI_LANGUAGE_NAME。

説明
MUI_LANGUAGE_ID
言語識別子形式で 言語 文字列を取得します。
MUI_LANGUAGE_NAME
言語名の形式で 言語 文字列を取得します。
 

次のフラグは、スレッド優先 UI 言語の取得に使用する関数のフィルター処理を指定します。 既定のフラグはMUI_MERGE_USER_FALLBACKです。

説明
MUI_MERGE_SYSTEM_FALLBACK
システム フォールバックを使用して、リソース ローダーで使用される言語リストに正確に対応するリストを取得します。 このフラグは、MUI_MERGE_USER_FALLBACKと組み合わせてのみ使用できます。 フラグを組み合わせて使用すると、フォールバック言語とニュートラル言語をリストに含めることで、MUI_MERGE_USER_FALLBACKの通常の効果が変更されます。
MUI_MERGE_USER_FALLBACK
スレッド優先 UI 言語、プロセス優先 UI 言語、これらとは異なるユーザー優先 UI 言語、システムの既定の UI 言語 (まだリストに含まれていない場合) で構成される複合リストを取得します。 ユーザーが優先する UI 言語の一覧が空の場合、この関数はシステム優先 UI 言語を取得します。 このフラグをMUI_THREAD_LANGUAGESと組み合わせることはできません。
MUI_THREAD_LANGUAGES
現在のスレッドのスレッド優先 UI 言語のみを取得するか、現在のスレッドに優先言語が設定されていない場合は空のリストを取得します。 このフラグをMUI_MERGE_USER_FALLBACKまたはMUI_MERGE_SYSTEM_FALLBACKと組み合わせることはできません。
MUI_UI_FALLBACK
スレッド優先 UI 言語の完全な一覧を、関連付けられているフォールバック言語とニュートラル言語と共に取得します。 このフラグの使用は、MUI_MERGE_SYSTEM_FALLBACKとMUI_MERGE_USER_FALLBACKの組み合わせと同じです。 (Windows 7 以降にのみ適用されます)。

[out] pulNumLanguages

pwszLanguagesBuffer で取得された言語の数へのポインター。

[out, optional] pwszLanguagesBuffer

省略可能。 この関数が 、dwFlags で指定された形式で、順序付けされた null 区切りスレッド優先 UI 言語リストを取得するバッファーへのポインター。 このリストは、2 つの null 文字で終わります。

または、このパラメーターが NULL に設定され、 pcchLanguagesBuffer が 0 に設定されている場合、この関数は pcchLanguagesBuffer 内の言語バッファーの必要なサイズを取得します。 必要なサイズには、2 つの null 文字が含まれます。

[in, out] pcchLanguagesBuffer

pwszLanguagesBuffer によって示される言語バッファーのサイズ (文字単位) へのポインター。 関数から正常に戻った場合、 パラメーターには取得した言語バッファーのサイズが含まれます。

または、このパラメーターが 0 に設定され、 pwszLanguagesBufferNULL に設定されている場合、関数は pcchLanguagesBuffer 内の言語バッファーの必要なサイズを取得します。

戻り値

成功した場合は TRUE、 それ以外の場合 は FALSE を 返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出し、次のいずれかのエラー コードを返します。

  • ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分に大きくなかったか、 正しく NULL に設定されていませんでした。

その他の理由で関数が失敗した場合、パラメーター pulNumLanguagespcchLanguagesBuffer は未定義です。

解説

アプリケーションで指定されたフラグに応じて、この関数は、スレッド優先 UI 言語、プロセス優先 UI 言語、ユーザー優先 UI 言語またはシステム優先 UI 言語、およびシステムの既定の UI 言語で構成される複合リストを取得できます。 重複する言語が検出された場合、関数は最初の言語のみを取得します。

アプリケーションが SetThreadPreferredUILanguages を MUI_CONSOLE_FILTER フラグまたは MUI_COMPLEX_SCRIPT_FILTER フラグで呼び出した場合、 GetThreadPreferredUILanguages は結果リスト内の言語をフィルター処理します。 この関数は、コンソールで表示できない言語を代替言語に置き換えます。 言語の置換は、言語の LOCALE_SCONSOLEFALLBACKNAME の値から決定されます。 コンソール情報の詳細については、「 SetThreadUILanguage」の説明を参照してください。

MUI_LANGUAGE_NAME フラグを使用すると 、補足ロケールに対応する言語インターフェイス パック (LIP) 言語をより適切に処理できるため、MUI_LANGUAGE_IDよりもMUI_LANGUAGE_NAMEを使用することをお勧めします。

MUI_LANGUAGE_IDを指定すると、取得される言語文字列は 16 進数の言語識別子になります

先頭に 0x が含まれていない場合、長さは 4 文字になります。 たとえば、en-US が返されます

"0409" として、en を "0009" として使用します。

アプリケーションで MUI_LANGUAGE_ID フラグが設定されている場合、スレッド優先 UI 言語には、補助ロケールに対応する 1 つ以上の言語を含めることができます。 関数から正常に戻った場合、言語バッファーには、補足ロケールに対応する言語に対して "1400" が含まれます。 この一覧に含めることができる言語は 1 つだけです。 文字列 "1400" は 、LOCALE_CUSTOM_UI_DEFAULTの 16 進数の値に対応します。 また、関数から正常に戻った 場合、pwszLanguagesBuffer には、補足ロケールに対応する他の言語の "1000" が含まれます。 文字列 "1000" は LOCALE_CUSTOM_UNSPECIFIED の 16 進数の値に対応します。これは、補助ロケールを区別できないため、どの関数への入力としても役に立ちません。

C# シグネチャ

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean GetThreadPreferredUILanguages(
            System.UInt32 dwFlags,
            ref System.UInt32 pulNumLanguages,
            System.IntPtr pwszLanguagesBuffer,
            ref System.UInt32 pcchLanguagesBuffer
            );

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winnls.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

GetThreadUILanguage

多言語ユーザー インターフェイス

多言語ユーザー インターフェイス関数

SetThreadPreferredUILanguages

SetThreadUILanguage