プラットフォーム SDK
keybd_event
キーストロークを合成します。システムは、合成されたキーストロークから、 または メッセージを生成します。キーボードドライバの割り込みハンドラは、この関数を呼び出します。
Windows NT/2000:この関数は、SendInput 関数に取って代わられています。この関数の代わりに SendInput を使ってください。
VOID keybd_event(
BYTE bVk, // 仮想キーコード
BYTE bScan, // ハードウェアスキャンコード
DWORD dwFlags, // 関数のオプション
ULONG_PTR dwExtraInfo // 追加のキーストロークデータ
);
パラメータ
- bVk
- [入力]仮想キーコードを指定します。このコードは、1~254 の範囲内の値でなければなりません。詳細なリストについては、「」を参照してください。
- bScan
- このパラメータは未使用です。
- dwFlags
- [入力]関数の動作を指定します。次のフラグを任意に組み合わせて指定します。
| 値 | 意味 |
| KEYEVENTF_EXTENDEDKEY | このフラグをセットすると、スキャンコードにプリフィックスバイト 0xE0(224)を追加します。 |
| KEYEVENTF_KEYUP | このフラグをセットすると、キーを離す操作になります。セットしない場合、キーを押す操作になります。 |
- dwExtraInfo
- [入力]キーストロークに関連する 32 ビットの追加情報を指定します。
戻り値
戻り値はありません。
解説
アプリケーションは画面のスナップショットを取得してクリップボードに記憶させるために、PrintScreen キーの押し下げをシミュレートすることもできます。このような操作を行うには、bVk パラメータを VK_SNAPSHOT に設定して、keybd_event を呼び出します。
Windows NT:keybd_event 関数は、NumLock、CapsLock、ScrollLock の各キーをトグルさせる( オンとオフを交互に繰り返す)こともできます。
Windows 95:keybd_event 関数がトグルさせることができるのは、CapsLock と ScrollLock の各キーだけです。NUM LOCK キーをトグルさせることはできません。
次のサンプルコードは、仮想キー VK_NUMLOCK を指定して keybd_event() を使うことにより、NumLock のランプをトグルさせます(Windows NT のみ)。1 個の Bool 型の値を使って、ランプがオフ(FALSE)とオン(TRUE)のどちらになっているかを表します。CapsLock キー(VK_CAPITAL)と ScrollLock キー(VK_SCROLL)にも、これと同じ手法を適用できます。
#include <windows.h>
void SetNumLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
(!bState && (keyState[VK_NUMLOCK] & 1)) )
{
// キーの押し下げをシミュレートする。
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// キーの解放をシミュレートする。
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
void main()
{
SetNumLock( TRUE );
}
対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
参照
GetAsyncKeyState, GetKeyState, keybd_event, MapVirtualKey, SetKeyboardState