[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
bVk:虛擬鍵碼,對應 Keys 列舉dwFlags:KEYEVENTF_KEYDOWN (按下)、KEYEVENTF_EXTENDEDKEY (擴充鍵)、KEYEVENTF_KEYUP (釋放)[Flags]
public enum KeyboardEvents {
None = 0x0, KeyDown = 0x1, KeyUp = 0x2
}
public static void SendKeyEvent(Keys key, KeyboardEvents events) {
if ((events & KeyboardEvents.KeyDown) == KeyboardEvents.KeyDown)
keybd_event((byte)key, 0, KEYEVENTF_KEYDOWN, 0);
if ((events & KeyboardEvents.KeyUp) == KeyboardEvents.KeyUp)
keybd_event((byte)key, 0, KEYEVENTF_KEYUP, 0);
}
配合前兩篇手柄事件(KeyDown/KeyUp),即可實現手柄模擬鍵盤/滑鼠功能。