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。
値 | 説明 |
---|---|
|
言語識別子形式で 言語 文字列を取得します。 |
|
言語名の形式で 言語 文字列を取得します。 |
次のフラグは、スレッド優先 UI 言語の取得に使用する関数のフィルター処理を指定します。 既定のフラグはMUI_MERGE_USER_FALLBACKです。
[out] pulNumLanguages
pwszLanguagesBuffer で取得された言語の数へのポインター。
[out, optional] pwszLanguagesBuffer
省略可能。 この関数が 、dwFlags で指定された形式で、順序付けされた null 区切りスレッド優先 UI 言語リストを取得するバッファーへのポインター。 このリストは、2 つの null 文字で終わります。
または、このパラメーターが NULL に設定され、 pcchLanguagesBuffer が 0 に設定されている場合、この関数は pcchLanguagesBuffer 内の言語バッファーの必要なサイズを取得します。 必要なサイズには、2 つの null 文字が含まれます。
[in, out] pcchLanguagesBuffer
pwszLanguagesBuffer によって示される言語バッファーのサイズ (文字単位) へのポインター。 関数から正常に戻った場合、 パラメーターには取得した言語バッファーのサイズが含まれます。
または、このパラメーターが 0 に設定され、 pwszLanguagesBuffer が NULL に設定されている場合、関数は pcchLanguagesBuffer 内の言語バッファーの必要なサイズを取得します。
戻り値
成功した場合は TRUE、 それ以外の場合 は FALSE を 返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出し、次のいずれかのエラー コードを返します。
- ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分に大きくなかったか、 正しく NULL に設定されていませんでした。
その他の理由で関数が失敗した場合、パラメーター pulNumLanguages と pcchLanguagesBuffer は未定義です。
解説
アプリケーションで指定されたフラグに応じて、この関数は、スレッド優先 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 |