LoadKeyboardLayoutA 関数 (winuser.h)
新しい入力ロケール識別子 (以前はキーボード レイアウトと呼ばれていました) をシステムに読み込みます。
Windows 8より前: 一度に複数の入力ロケール識別子を読み込むことができますが、一度にアクティブになるのはプロセスごとに 1 つだけです。 複数の入力ロケール識別子を読み込むと、それらの切り替えを迅速に行うことができます。
Windows 8以降: 入力ロケール識別子は、システム全体に対して読み込まれます。 現在のプロセスがキーボード フォーカスを持つウィンドウを所有していない場合、この関数は無効です。
構文
HKL LoadKeyboardLayoutA(
[in] LPCSTR pwszKLID,
[in] UINT Flags
);
パラメーター
[in] pwszKLID
型: LPCTSTR
読み込む入力ロケール識別子の名前。 この名前は、 言語識別子 (低い単語) とデバイス識別子 (高い単語) の 16 進数の値で構成される文字列です。 たとえば、米国英語には0x0409の言語識別子があるため、プライマリの米国英語レイアウトの名前は "00000409" です。 米国英語レイアウトのバリアント (Dvorak レイアウトなど) には、"00010409"、"00020409" という名前が付けられます。
Windows で提供される入力レイアウトの一覧については、「Windows のキーボード識別子と入力メソッド エディター」を参照してください。
[in] Flags
型: UINT
入力ロケール識別子の読み込み方法を指定します。 このパラメーターには、次の 1 つ以上の値を指定できます。
値 | 意味 |
---|---|
|
Windows 8より前: 指定した入力ロケール識別子がまだ読み込まれていない場合、関数は現在のスレッドの入力ロケール識別子を読み込んでアクティブ化します。
Windows 8以降: 指定した入力ロケール識別子がまだ読み込まれていない場合、関数はシステムの入力ロケール識別子を読み込んでアクティブ化します。 |
|
Windows 8より前: 新しい入力ロケール識別子が読み込まれるときに、ShellProc フック プロシージャがHSHELL_LANGUAGEフック コードを受け取らないようにします。 通常、この値は、アプリケーションが複数の入力ロケール識別子を 1 つずつ読み込むときに使用されます。 最後の入力ロケール識別子以外のすべてにこの値を適用すると、すべての入力ロケール識別子が追加されるまでシェルの処理が遅れます。
Windows 8以降: このシナリオでは、システム全体に対して最後の入力ロケール識別子が設定されます。 |
|
Windows 8より前: 指定した入力ロケール識別子を入力ロケール識別子リストの先頭に移動し、そのロケール識別子を現在のスレッドのアクティブなロケール識別子にします。 この値は、KLF_ACTIVATEが指定されていない場合でも、入力ロケール識別子リストの順序 を 変更します。
Windows 8以降: 指定した入力ロケール識別子を入力ロケール識別子リストの先頭に移動し、そのロケール識別子をシステムのアクティブなロケール識別子にします。 この値は、KLF_ACTIVATEが指定されていない場合でも、入力ロケール識別子リストの順序 を 変更します。 |
|
新しい入力ロケール識別子に現在の入力ロケール識別子と同じ言語識別子がある場合、新しい入力ロケール識別子は、その言語の入力ロケール識別子として現在のロケール識別子に置き換えられます。 この値が指定されておらず、入力ロケール識別子が同じ言語識別子を持つ場合、現在の入力ロケール識別子は置き換えられず、関数は NULL を返します。 |
|
指定した入力ロケール識別子を、ユーザーが優先する別のロケールに置き換える。 システムは、このフラグが設定された状態で開始されるため、アプリケーションでは常にこのフラグを使用することをお勧めします。 置換は、 レジストリ キーHKEY_CURRENT_USER\Keyboard Layout\Substitutes 明示的に置換ロケールを定義している場合にのみ発生します。 たとえば、キーに値 "00010409" の値名 "00000409" が含まれている場合、US レイアウト ("00000409") を読み込むと、代わりに United States-Dvorak レイアウト ("00010409") が読み込まれます。 システムは起動時 にKLF_SUBSTITUTE_OK を使用するため、すべてのアプリケーションで入力ロケール識別子を読み込むときにこの値を使用して、ユーザーの設定が選択されていることを確認することをお勧めします。 |
|
Windows 8より前: このフラグは、KLF_ACTIVATEでのみ有効です。 プロセス全体に対して指定された入力ロケール識別子をアクティブ化し、 WM_INPUTLANGCHANGE メッセージを現在のスレッドの [フォーカス] ウィンドウまたは [アクティブ] ウィンドウに送信します。 通常、 LoadKeyboardLayout は現在のスレッドに対してのみ入力ロケール識別子をアクティブにします。
Windows 8以降: このフラグは使用されません。 現在のプロセスがキーボード フォーカスを持つウィンドウを所有している場合、LoadKeyboardLayout は常にシステム全体の入力ロケール識別子をアクティブにします。 |
|
このフラグはサポートされていません。 代わりに UnloadKeyboardLayout 関数を使用してください。 |
戻り値
種類: HKL
関数が成功した場合、戻り値は pwszKLID で指定された名前に対応する入力ロケール識別子です。 一致するロケールが使用できない場合、戻り値はシステムの既定の言語です。
関数が失敗した場合は、返される値は NULL です。 これは、レイアウト ライブラリがアプリケーション ディレクトリから読み込まれる場合に発生する可能性があります。
詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
入力ロケール識別子は、音声テキスト変換、Input Method エディター (IME)、またはその他の形式の入力も含めることができるため、キーボード レイアウトよりも広範な概念です。
アプリケーションは、通常、言語の既定の入力ロケール識別子または IME を読み込むことができます。これを行うには、言語識別子の文字列バージョンのみを指定します。 アプリケーションが特定のロケールまたは IME を読み込みたい場合は、レジストリを読み取って、 LoadKeyboardLayout に渡す特定の入力ロケール識別子を決定する必要があります。 この場合、ロケールの既定の入力ロケール識別子をアクティブ化する要求では、最初に一致するものがアクティブになります。 GetKeyboardLayout または LoadKeyboardLayout から返される明示的な入力ロケール識別子を使用して、特定の IME をアクティブ化する必要があります。
Windows 8より前: この関数は、現在のプロセスまたはスレッドのレイアウトにのみ影響します。
Windows 8以降: この関数は、システム全体のレイアウトに影響します。
注意
winuser.h ヘッダーは、LoadKeyboardLayout をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |
こちらもご覧ください
概念
その他のリソース
リファレンス