static public void PressKeyVK(WinAPI.KeyCode key, bool press, bool release, bool compatible) { if (key > WinAPI.KeyCode.MouseFirst) { switch (key) { case WinAPI.KeyCode.MouseLClick: WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftDown, 0, 0, 0, 0); WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftUp, 0, 0, 0, 0); break; case WinAPI.KeyCode.MouseLDown: WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftDown, 0, 0, 0, 0); break; case WinAPI.KeyCode.MouseLUp: WinAPI.mouse_event(WinAPI.MouseEventFlag.LeftUp, 0, 0, 0, 0); break; case WinAPI.KeyCode.MouseRClick: WinAPI.mouse_event(WinAPI.MouseEventFlag.RightDown, 0, 0, 0, 0); WinAPI.mouse_event(WinAPI.MouseEventFlag.RightUp, 0, 0, 0, 0); break; case WinAPI.KeyCode.MouseRDown: WinAPI.mouse_event(WinAPI.MouseEventFlag.RightDown, 0, 0, 0, 0); break; case WinAPI.KeyCode.MouseRUp: WinAPI.mouse_event(WinAPI.MouseEventFlag.RightUp, 0, 0, 0, 0); break; } return; } uint scanCode = WinAPI.MapVirtualKey((uint)key, 0); uint extended = IsExtendedKey(key) ? (uint)WinAPI.KeybdEventFlag.ExtendedKey : 0; if (compatible) { extended = 0; } if (press) { WinAPI.keybd_event((byte)key, (byte)scanCode, (WinAPI.KeybdEventFlag)extended, 0); } if (release) { WinAPI.keybd_event((byte)key, (byte)scanCode, (WinAPI.KeybdEventFlag)(extended | (uint)WinAPI.KeybdEventFlag.KeyUp), 0); } }
static public bool IsExtendedKey(WinAPI.KeyCode key) { switch (key) { case WinAPI.KeyCode.Left: case WinAPI.KeyCode.Up: case WinAPI.KeyCode.Right: case WinAPI.KeyCode.Down: case WinAPI.KeyCode.Prior: case WinAPI.KeyCode.Next: case WinAPI.KeyCode.End: case WinAPI.KeyCode.Home: case WinAPI.KeyCode.Insert: case WinAPI.KeyCode.Delete: case WinAPI.KeyCode.Divide: case WinAPI.KeyCode.NumLock: return(true); default: return(false); } }
static public void PressKeyVK(WinAPI.KeyCode key) { PressKeyVK(key, true, true, false); }