Windows仮想キーイベント

Windows端末を使っているときに仮想キーコードのイベントを発火し、疑似的にキーを入力したようにするAPI keybd_event()についてのメモ

参考ページ

learn.microsoft.com
www.inasoft.org

サンプルコード

using System.Runtime.InteropServices;

namespace Sample
{
    public static class Win32Api
    {
        // keybd_event()の呼び出し、win32apiを利用する.
        [DllImport("user32.dll")]
    private static extern uint keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

        // キーの押上.
    private static uint KEYEVENT_KEYUP => 0x0002;
        
        // 仮想キー、0
        public static byte VK_0 => 0x30;


        /// <summary>
    /// 指定した仮想キーコードのキーを押下 -> 押上 処理を行う.
    /// </summary>
    /// <param name="keycode"></param>
    public static void KeyBoardEvent(byte keycode)
    {
        keybd_event(keycode, 0, 0, 0);
        keybd_event(keycode, 0, Win32Api.KEYEVENT_KEYUP, 0);
    }
    }
}

基本的に押下と押上のイベントはペアで扱うのが無難

// 指定したキーコードのキーを押下したイベントを発火する.
keybd_event(keycode, 0, 0, 0);

// 指定したキーコードのキーを押上したイベントを発火する.
keybd_event(keycode, 0, Win32Api.KEYEVENT_KEYUP, 0);