次の方法で共有


LoadKeyboardLayoutW 関数 (winuser.h)

新しい入力ロケール識別子 (以前はキーボード レイアウトと呼ばれます) をシステムに読み込みます。

Windows 8 より前: 一度に複数の入力ロケール識別子を読み込むことができますが、一度にアクティブになるのはプロセスごとに 1 つだけです。 複数の入力ロケール識別子を読み込むと、それらを迅速に切り替えることができます。

Windows 8 以降: 入力ロケール識別子がシステム全体に対して読み込まれます。 現在のプロセスがキーボード フォーカスを持つウィンドウを所有していない場合、この関数は無効です。

構文

HKL LoadKeyboardLayoutW(
  [in] LPCWSTR pwszKLID,
  [in] UINT    Flags
);

パラメーター

[in] pwszKLID

型: LPCTSTR

読み込む入力ロケール識別子の名前。 この名前は、言語識別子 (低い単語) とデバイス識別子 (高い単語) の 16 進数の値で構成される文字列です。 たとえば、米国英語には0x0409の言語識別子があるため、米国英語のプライマリ レイアウトには "00000409" という名前が付けられます。 米国英語のレイアウト (Dvorak レイアウトなど) のバリエーションには、"00010409"、"00020409" などの名前が付けられます。

Windows で提供される入力レイアウトの一覧については、「windowsのキーボード識別子と入力メソッド エディター を参照してください。

[in] Flags

型: UINT

入力ロケール識別子を読み込む方法を指定します。 このパラメーターには、次のいずれかの値を指定できます。

価値 意味
KLF_ACTIVATE
0x00000001
Windows 8 より前のバージョン: 指定した入力ロケール識別子がまだ読み込まれていない場合、関数は現在のスレッドの入力ロケール識別子を読み込んでアクティブ化します。

Windows 8 以降: 指定した入力ロケール識別子がまだ読み込まれていない場合、関数はシステムの入力ロケール識別子を読み込んでアクティブ化します。

KLF_NOTELLSHELL
0x00000080
Windows 8 より前のバージョン: 新しい入力ロケール識別子が読み込まれるときに、ShellProc フック プロシージャが HSHELL_LANGUAGE フック コードを受け取らないようにします。 通常、この値は、アプリケーションが複数の入力ロケール識別子を次々に読み込むときに使用されます。 この値を最後の入力ロケール識別子以外のすべての値に適用すると、すべての入力ロケール識別子が追加されるまでシェルの処理が遅れます。

Windows 8 以降: このシナリオでは、システム全体に対して最後の入力ロケール識別子が設定されます。

KLF_REORDER
0x00000008
Windows 8 より前: 指定した入力ロケール識別子を入力ロケール識別子リストの先頭に移動し、そのロケール識別子を現在のスレッドのアクティブなロケール識別子にします。 この値は、KLF_ACTIVATE が指定されていない場合でも、入力ロケール識別子リストの順序を変更します。

Windows 8 以降: 指定した入力ロケール識別子を入力ロケール識別子リストの先頭に移動し、そのロケール識別子をシステムのアクティブなロケール識別子にします。 この値は、KLF_ACTIVATE が指定されていない場合でも、入力ロケール識別子リストの順序を変更します。

KLF_REPLACELANG
0x00000010
新しい入力ロケール識別子が現在の入力ロケール識別子と同じ言語識別子を持つ場合、新しい入力ロケール識別子は、現在の入力ロケール識別子をその言語の入力ロケール識別子として置き換えます。 この値を指定せず、入力ロケール識別子が同じ言語識別子を持つ場合、現在の入力ロケール識別子は置き換えられず、関数は null返します。
KLF_SUBSTITUTE_OK
0x00000002
指定した入力ロケール識別子を、ユーザーが優先する別のロケールに置き換えます。 システムは、このフラグを設定して開始し、アプリケーションでは常にこのフラグを使用することをお勧めします。 置換は、レジストリ キー HKEY_CURRENT_USER\Keyboard Layout\Substitutes 明示的に置換ロケールを定義する場合にのみ発生します。 たとえば、キーに値 "00010409" の値名 "00000409" が含まれている場合、US レイアウト ("00000409") を読み込むと、代わりに United States-Dvorak レイアウト ("00010409") が読み込まれます。 システムは起動時に KLF_SUBSTITUTE_OK を使用するため、すべてのアプリケーションで入力ロケール識別子を読み込むときにこの値を使用して、ユーザーの基本設定が選択されていることを確認することをお勧めします。
KLF_SETFORPROCESS
0x00000100
windows 8 より前の : このフラグは、KLF_ACTIVATEでのみ有効です。 プロセス全体に対して指定された入力ロケール識別子をアクティブ化し、WM_INPUTLANGCHANGE メッセージを現在のスレッドのフォーカスウィンドウまたはアクティブ ウィンドウに送信します。 通常、LoadKeyboardLayout は、現在のスレッドに対してのみ入力ロケール識別子をアクティブにします。

Windows 8 以降: このフラグは使用されません。 LoadKeyboardLayout は、現在のプロセスがキーボード フォーカスを持つウィンドウを所有している場合、常にシステム全体の入力ロケール識別子をアクティブにします。

KLF_UNLOADPREVIOUS
このフラグはサポートされていません。 代わりに、UnloadKeyboardLayout 関数を使用してください。

戻り値

型: HKL

関数が成功した場合、戻り値は pwszKLIDで指定された名前 対応する入力ロケール識別子です。 一致するロケールが使用できない場合、戻り値はシステムの既定の言語です。

関数が失敗した場合、戻り値は NULL です。 これは、レイアウト ライブラリがアプリケーション ディレクトリから読み込まれている場合に発生する可能性があります。

拡張エラー情報を取得するには、GetLastError呼び出します。

備考

入力ロケール識別子は、音声テキスト変換、入力メソッド エディター (IME)、またはその他の形式の入力も含めることができるため、キーボード レイアウトよりも広い概念です。

アプリケーションは、通常、言語の既定の入力ロケール識別子または IME を読み込み、言語識別子の文字列バージョンのみを指定することで読み込むことができます。 アプリケーションが特定のロケールまたは IME を読み込む場合は、レジストリを読み取って、LoadKeyboardLayoutに渡す特定の入力ロケール識別子を決定する必要があります。 この場合、ロケールの既定の入力ロケール識別子をアクティブ化する要求は、最初に一致するものをアクティブにします。 特定の IME は、GetKeyboardLayout または LoadKeyboardLayoutから返される明示的な入力ロケール識別子 使用してアクティブ化 必要があります。

Windows 8 より前のバージョン: この関数は、現在のプロセスまたはスレッドのレイアウトにのみ影響します。

Windows 8 以降: この関数は、システム全体のレイアウトに影響します。

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winuser.h (Windows.h を含む)
ライブラリ User32.lib
DLL User32.dll

関連項目

ActivateKeyboardLayout の

概念

GetKeyboardLayoutName を する

キーボード入力

MAKELANGID を する

その他のリソース を する

リファレンス

UnloadKeyboardLayout の