keybd_event

https://msdn.microsoft.com/ja-jp/library/ms646281.aspx https://msdn.microsoft.com/ja-jp/library/ms646280.aspx https://msdn.microsoft.com/ja-jp/library/dd375731.aspx

キーストロークを合成します。システムは、合成されたキーストロークから、 または メッセージを生成します。キーボードドライバの割り込みハンドラは、この関数を呼び出します。

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

表示: