このトピックはまだ評価されていません このトピックを評価する

ActivateKeyboardLayout

呼び出し側スレッドまたは現在のプロセスに対して入力ロケール識別子( 旧名キーボードレイアウトハンドル)を設定します。入力ロケール識別子は、キーボードの物理レイアウトだけでなく、ロケールも指定します。

HKL ActivateKeyboardLayout(
  HKL hkl,     // 入力ロケール識別子
  UINT Flags   // 入力ロケール識別子フラグ
);

パラメータ

hkl
アクティブ化する入力ロケール識別子を指定します。

Windows 95/98:このパラメータは、LoadKeyboardLayout 関数か GetKeyboardLayoutList 関数で取得するか、または次表のいずれかの値を指定することができます。

Windows NT:入力ロケール識別子は、LoadKeyboardLayout 関数であらかじめロードされていなければなりません。このパラメータには、キーボードレイアウトのハンドル、または次の値のいずれかを指定してください。

意味
HKL_NEXTシステムにより管理されている、ロードされたロケール識別子の巡回リスト内で、次のロケール識別子を選択します。
HKL_PREVシステムにより管理されている、ロードされたロケール識別子の巡回リスト内で、前のロケール識別子を選択します。

Flags
入力ロケール識別子をどのようにアクティブ化するかを指定します。このパラメータには次の値のいずれかを指定することができます。
意味
KLF_REORDERこのビットがセットされている場合、与えられたロケール識別子をリストの先頭に移動して、システムが持つロードされたロケール識別子の巡回リストを並べ替えます。このビットがセットされていない場合、リストは順序が変更されることなく循環します。

たとえば、フランス語、ドイツ語、スペイン語のロケール識別子をこの順でロードした状態で、さらに英語のロケール識別子をアクティブ化している場合、KLF_REORDER ビットをセットしてドイツ語のロケール識別子をアクティブ化すると、順序はドイツ語、英語、フランス語、スペイン語の順になります。ドイツ語ロケール識別子を KLF_REORDER ビットをセットせずにアクティブ化すると、順序はドイツ語、スペイン語、英語、フランス語の順になります。

ロードされているロケール識別子の数が3未満の場合、このフラグは適切な値を取りません。

KLF_SETFORPROCESSWindows 2000:プロセス全体に対して指定されたロケール識別子をアクティブ化し、現在のスレッドのフォーカスまたはアクティブウィンドウに WM_INPUTLANGCHANGE メッセージを送信します。
KLF_UNLOADPREVIOUSこのフラグはサポートされていません。代わりに UnloadKeyboardLayout 関数を使います。

戻り値

Windows NT 3.51 以前:戻り値は BOOL 型です。関数が成功すると、0 以外の値が返ります。関数が失敗すると、0 が返ります。
Windows 95/98 および Windows NT 4.0 以降:戻り値は HKL 型です。関数が成功すると、以前の入力ロケール識別子( 旧名キーボードレイアウトハンドル)が返ります。関数が失敗すると、0 が返ります。
拡張エラー情報を取得するには、GetLastError 関数を使います。

解説

この関数はキーボードレイアウトの制限を受けません。hkl パラメータは実際には入力ロケール識別子です。入力ロケール識別子には音声入力コンバータ、IME、またはその他のあらゆる入力形式が含まれており、キーボードレイアウトよりも広い概念を持ちます。入力ロケール識別子は、一度に複数ロードすることができますが、アクティブ化できるのは 1 つだけです。複数の入力ロケール識別子をロードすると、切り替えを迅速に行うことができます。

Windows 95/98:アプリケーションは、上位ワードを 0 に、下位ワードをロケール識別子にセットして、有効な入力ロケール識別子を作成することができます。入力ロケール識別子を使うと、物理レイアウトに影響を与えずに入力言語を変更することができます。
ロケールごとに複数の入力メソッドエディタ(IME)が使えるときは、上位ワード( デバイスハンドル)が 0 である入力ロケール識別子を渡すと、そのロケールに属する IME のリストの最初にある IME がアクティブ化されます。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:winuser.h 内で宣言
インポートライブラリ:user32.lib を使用

参照

LoadKeyboardLayoutGetKeyboardLayoutNameUnloadKeyboardLayout

この情報は役に立ちましたか。
(残り 2000 文字)