キーボード入力
このセクションでは、システムでキーボード入力がどのように生成されるか、また、アプリケーションがその入力を受け取って処理する方法について説明します。
このセクションの内容
名前 | 説明 |
---|---|
キーボード入力の概要 | キーボード入力について説明します。 |
キーボード入力の使用 | キーボード入力に関連付けられているタスクについて説明します。 |
キーボード入力リファレンス | API リファレンスを収録しています。 |
関数
名前 | 説明 |
---|---|
ActivateKeyboardLayout | 呼び出し元のスレッドまたは現在のプロセスの入力ロケール識別子 (以前はキーボード レイアウト ハンドルと呼ばれていました) を設定します。 入力ロケール識別子は、ロケールとともにキーボードの物理レイアウトを指定します。 |
BlockInput | キーボードとマウスの入力イベントがアプリケーションに到達するのをブロックします。 |
EnableWindow | 指定したウィンドウまたはコントロールへのマウスとキーボードの入力を有効または無効にします。 入力を無効にすると、ウィンドウはマウスのクリックやキーの押下などの入力を受け取りません。 入力を有効にすると、ウィンドウはすべての入力を受け取ります。 |
GetActiveWindow | 呼び出し元スレッドのメッセージ キューにアタッチされたアクティブなウィンドウのウィンドウ ハンドルを取得します。 |
GetAsyncKeyState | 関数の呼び出し時にキーが押されているかどうか、および GetAsyncKeyState の前回の呼び出し後にキーが押されたかどうかを判別します。 |
GetFocus | キーボード フォーカスのあるウィンドウが呼び出し元スレッドのメッセージ キューにアタッチされている場合、そのウィンドウのハンドルを取得します。 |
GetKeyboardLayout | 指定したスレッドのアクティブな入力ロケール識別子 (以前はキーボード レイアウトと呼ばれていました) を取得します。 idThread パラメーターが 0 の場合、アクティブ スレッドの入力ロケール識別子が返されます。 |
GetKeyboardLayoutList | システムにある現在の入力ロケールのセットに対応する、入力ロケール識別子 (以前はキーボード レイアウト ハンドルと呼ばれていました) を取得します。 この関数は、指定したバッファーに識別子をコピーします。 |
GetKeyboardLayoutName | アクティブな入力ロケール識別子 (以前はキーボード レイアウトと呼ばれていました) の名前を取得します。 |
GetKeyboardState | 256 個の仮想キーの状態を、指定したバッファーにコピーします。 |
GetKeyNameText | キーの名前を表す文字列を取得します。 |
GetKeyState | 指定した仮想キーの状態を取得します。 状態により、キーが押されている、押されていない、切り替えになっている (キーを押すたびにオンとオフが交互に切り替わる) のいずれであるかが指定されます。 |
GetLastInputInfo | 最後の入力イベントの時刻を取得します。 |
IsWindowEnabled | 指定したウィンドウでマウス入力およびキーボード入力が有効かどうかを判別します。 |
LoadKeyboardLayout | 新しい入力ロケール識別子 (以前はキーボード レイアウトと呼ばれていました) をシステムに読み込みます。 一度に複数の入力ロケール識別子を読み込むことができますが、一度にアクティブになるのはプロセスごとに 1 つだけです。 複数の入力ロケール識別子を読み込むと、それらの切り替えを迅速に行うことができます。 |
MapVirtualKey | 仮想キー コードをスキャン コードまたは文字値に変換 (マップ) するか、スキャン コードを仮想キー コードに変換します。 指定したコードの変換に使用するキーボード レイアウトのハンドルを指定するには、MapVirtualKeyEx 関数を使用します。 |
MapVirtualKeyEx | 仮想キー コードをスキャン コードまたは文字値にマップするか、スキャン コードを仮想キー コードに変換します。 この関数は、入力言語と入力ロケール識別子を使用してコードを変換します。 |
OemKeyScan | OEMASCII コード 0 から 0x0FF までを OEM スキャン コードとシフト状態にマップします。 この関数は、プログラムでキーボード入力をシミュレートすることによって OEM テキストを別のプログラムに送信できるようにする情報を提供します。 |
RegisterHotKey | システム全体のホット キーを定義します。 |
SendInput | キーストローク、マウスの動き、ボタンのクリックを合成します。 |
SetActiveWindow | ウィンドウをアクティブにします。 ウィンドウは、呼び出し元スレッドのメッセージ キューにアタッチされる必要があります。 |
SetFocus | 指定したウィンドウにキーボード フォーカスを設定します。 ウィンドウは、呼び出し元スレッドのメッセージ キューにアタッチされる必要があります。 |
SetKeyboardState | 256 バイトのキーボード キー状態の配列を、呼び出し元スレッドのキーボード入力状態テーブルにコピーします。 これは、GetKeyboardState および GetKeyState 関数によってアクセスされるテーブルと同じです。 このテーブルに加えた変更は、他のスレッドへのキーボード入力には影響しません。 |
ToAscii | 指定した仮想キー コードとキーボードの状態を、対応する 1 つまたは複数の文字に変換します。 この関数は、キーボード レイアウト ハンドルによって識別される入力言語と物理キーボード レイアウトを使用してコードを変換します。 指定したコードの変換に使用するキーボード レイアウトのハンドルを指定するには、ToAsciiEx 関数を使用します。 |
ToAsciiEx | 指定した仮想キー コードとキーボードの状態を、対応する 1 つまたは複数の文字に変換します。 この関数は、入力ロケール識別子によって識別される入力言語と物理キーボード レイアウトを使用してコードを変換します。 |
ToUnicode | 指定した仮想キー コードとキーボードの状態を、対応する 1 つまたは複数の Unicode 文字に変換します。 指定したコードの変換に使用するキーボード レイアウトのハンドルを指定するには、ToUnicodeEx 関数を使用します。 |
ToUnicodeEx | 指定した仮想キー コードとキーボードの状態を、対応する 1 つまたは複数の Unicode 文字に変換します。 |
UnloadKeyboardLayout | 入力ロケール識別子 (以前はキーボード レイアウトと呼ばれていました) をアンロードします。 |
UnregisterHotKey | 呼び出し元スレッドによって以前に登録されたホット キーを解放します。 |
VkKeyScanEx | 文字を対応する仮想キー コードとシフト状態に変換します。 この関数は、入力ロケール識別子によって識別される入力言語と物理キーボード レイアウトを使用して文字を変換します。 |
以下の関数は互換性のために残されています。
関数 | 説明 |
---|---|
GetKBCodePage | 現在のコード ページを取得します。 |
keybd_event | キーストロークを合成します。 システムは、このような合成キーストロークを使用して、WM_KEYUP または WM_KEYDOWN メッセージを生成できます。 キーボード ドライバーの割り込みハンドラーは、keybd_event 関数を呼び出します。 |
VkKeyScan | 文字を、現在のキーボードの対応する仮想キー コードとシフト状態に変換します。 |
[メッセージ]
名前 | 説明 |
---|---|
WM_GETHOTKEY | ウィンドウに関連付けられているホット キーを判別します。 |
WM_SETHOTKEY | ホット キーをウィンドウに関連付けます。 ユーザーがホット キーを押すと、システムによってウィンドウがアクティブになります。 |
通知
名前 | 説明 |
---|---|
WM_ACTIVATE | アクティブ化されるウィンドウと非アクティブ化されるウィンドウの両方に送信されます。 ウィンドウで同じ入力キューが使用されている場合、メッセージは同期的に送信されます。最初に、非アクティブ化される最上位ウィンドウのウィンドウ プロシージャに送信され、その後、アクティブ化される最上位ウィンドウのウィンドウ プロシージャに送信されます。 ウィンドウで異なる入力キューが使用されている場合、メッセージは非同期的に送信されるため、ウィンドウは直ちにアクティブ化されます。 |
WM_APPCOMMAND | ユーザーが (たとえば、マウスを使用してアプリケーション コマンド ボタンをクリックしたり、キーボードでアプリケーション コマンド キーを入力したりして) アプリケーション コマンド イベントを生成したことをウィンドウに通知します。 |
WM_CHAR | WM_KEYDOWN メッセージが TranslateMessage 関数によって変換されるときに、キーボード フォーカスがあるウィンドウに投稿されます。 WM_CHAR メッセージには、押したキーの文字コードが入ります。 |
WM_DEADCHAR | WM_KEYUP メッセージが TranslateMessage 関数によって変換されると、キーボード フォーカスのあるウィンドウに投稿されます。 WM_DEADCHAR は、デッド キーによって生成される文字コードを指定します。 デッド キーは、別の文字と組み合わせて複合文字を形成する、ウムラウト (二重ドット) などの文字を生成するキーです。 たとえば、ウムラウト付き O 文字 ( ) は、ウムラウト文字のデッド キーを入力し、O キーを入力することによって生成されます。 |
WM_HOTKEY | RegisterHotKey 関数によって登録されたホット キーをユーザーが押したときにポストされます。 メッセージは、ホット キーを登録したスレッドに関連付けられているメッセージ キューの先頭に配置されます。 |
WM_KEYDOWN | 非システム キーが押されたときに、キーボード フォーカスのあるウィンドウに投稿されます。 非システム キーとは、Alt キーを押していないときに押すキーです。 |
WM_KEYUP | 非システムキーが解放されたときに、キーボード フォーカスのあるウィンドウにポストされます。 非システム キーとは、Alt キーが押されていないときに押されるキー、またはウィンドウにキーボード フォーカスがあるときに押されるキーボード キーです。 |
WM_KILLFOCUS | ウィンドウがキーボード フォーカスを失う直前に、そのウィンドウに送信されます。 |
WM_SETFOCUS | ウィンドウがキーボード フォーカスを得た後に、そのウィンドウに送信されます。 |
WM_SYSDEADCHAR | WM_SYSKEYDOWN メッセージが TranslateMessage 関数によって変換される際に、キーボード フォーカスのあるウィンドウに送信されます。 WM_SYSDEADCHAR は、システム デッド キー (Alt キーを押しながら押されるデッド キー) の文字コードを指定します。 |
WM_SYSKEYDOWN | ユーザーが F10 キー (メニュー バーをアクティブにする) を押すか、Alt キーを押しながら別のキーを押したときに、キーボード フォーカスのあるウィンドウにポストされます。 また、現在どのウィンドウにもキーボード フォーカスがない場合にも発生します。この場合、WM_SYSKEYDOWN メッセージがアクティブ ウィンドウに送信されます。 メッセージを受信したウィンドウは、lParam パラメーターのコンテキスト コードを確認することで、これら 2 つのコンテキストを区別できます。 |
WM_SYSKEYUP | Alt キーが押されている間に押されたキーをユーザーが離したときに、キーボード フォーカスのあるウィンドウにポストされます。 また、現在どのウィンドウにもキーボード フォーカスがない場合にも発生します。この場合、WM_SYSKEYUP メッセージがアクティブ ウィンドウに送信されます。 メッセージを受信したウィンドウは、lParam パラメーターのコンテキスト コードを確認することで、これら 2 つのコンテキストを区別できます。 |
WM_UNICHAR | WM_KEYDOWN メッセージが TranslateMessage 関数によって変換される際に、キーボード フォーカスのあるウィンドウにポストされます。 WM_UNICHAR メッセージには、押したキーの文字コードが入ります。 |
構造体
名前 | 説明 |
---|---|
HARDWAREINPUT | キーボードまたはマウス以外の入力デバイスによって生成された、シミュレートされたメッセージに関する情報が含まれます。 |
INPUT | キーストローク、マウスの動き、マウスのクリックなどの入力イベントを合成するために使用される情報が含まれます。 |
KEYBDINPUT | シミュレートされたキーボード イベントに関する情報が含まれます。 |
LASTINPUTINFO | 最後の入力の時刻が含まれます。 |
MOUSEINPUT | シミュレートされたマウス イベントに関する情報が含まれます。 |
定数
名前 | 説明 |
---|---|
仮想キー コード | システムで使用される仮想キー コードのシンボリック定数名、16 進数の値、対応するマウスまたはキーボードの操作。 コードは番号順に示されています。 |