キーボード入力
このセクションでは、システムがキーボード入力を生成する方法と、アプリケーションがその入力を受け取って処理する方法について説明します。
このセクションの内容
名前 | 説明 |
---|---|
キーボード入力の概要 | キーボード入力について説明します。 |
キーボード入力の使用 | キーボード入力に関連付けられているタスクについて説明します。 |
キーボード入力リファレンス | 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 | 指定した仮想キー コードとキーボードの状態を、対応する文字または文字に変換します。 この関数は、キーボード レイアウト ハンドルによって識別される入力言語と物理キーボード レイアウトを使用してコードを翻訳します。 指定したコードの翻訳に使用するキーボード レイアウトへのハンドルを指定するには、 ToAsciiEx 関数を使用します。 |
ToAsciiEx | 指定した仮想キー コードとキーボードの状態を、対応する文字または文字に変換します。 この関数は、入力ロケール識別子によって識別される入力言語と物理キーボード レイアウトを使用してコードを翻訳します。 |
ToUnicode | 指定した仮想キー コードとキーボードの状態を、対応する Unicode 文字または文字に変換します。 指定したコードの翻訳に使用するキーボード レイアウトへのハンドルを指定するには、 ToUnicodeEx 関数を使用します。 |
ToUnicodeEx | 指定した仮想キー コードとキーボードの状態を、対応する 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 は、デッド キーによって生成される文字コードを指定します。 デッド キーは、別の文字と組み合わせて複合文字を形成する、ウムラウト (二重ドット) などの文字を生成するキーです。 たとえば、umlaut-O 文字 ( ) は、umlaut 文字のデッド キーを入力し、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 | キーボードまたはマウス以外の入力デバイスによって生成されたシミュレートされたメッセージに関する情報が含まれます。 |
入力 | キーストローク、マウスの動き、マウスクリックなどの入力イベントを合成するために使用される情報が含まれます。 |
KEYBDINPUT | シミュレートされたキーボード イベントに関する情報が含まれています。 |
LASTINPUTINFO | 最後の入力の時刻を格納します。 |
MOUSEINPUT | シミュレートされたマウス イベントに関する情報が含まれています。 |
定数
名前 | 説明 |
---|---|
仮想キー コード | システムで使用される仮想キー コードに相当するシンボリック定数名、16 進数の値、およびマウスまたはキーボード。 コードは数値順に一覧表示されます。 |