private static dwFlags ExtendedKeyFlagW(wVk key) { dwFlags flag = 0; if (key == wVk.VK_CONTROL) {//とりあえずControlだけ flag = dwFlags.KEYEVENTF_EXTENDEDKEY; } return(flag); }
public static INPUT ToInput(this KeyEvent x) { switch (x.Type) { default: case EventType.KeyDown: case EventType.KeyUp: return(new INPUT { type = type.INPUT_KEYBOARD, ki = new KEYBDINPUT { time = (int)x.Elapsed, wVk = (wVk)x.Code, dwFlags = x.Type == EventType.KeyDown ? dwFlags.KEYEVENTF_KEYDOWN : dwFlags.KEYEVENTF_KEYUP, }, }); case EventType.MouseDown: case EventType.MouseUp: dwFlags f = 0; switch ((System.Windows.Forms.MouseButtons)x.Code) { case System.Windows.Forms.MouseButtons.Left: f = x.Type == EventType.MouseDown ? dwFlags.MOUSEEVENTF_LEFTDOWN : dwFlags.MOUSEEVENTF_LEFTUP; break; case System.Windows.Forms.MouseButtons.Right: f = x.Type == EventType.MouseDown ? dwFlags.MOUSEEVENTF_RIGHTDOWN : dwFlags.MOUSEEVENTF_RIGHTUP; break; case System.Windows.Forms.MouseButtons.Middle: f = x.Type == EventType.MouseDown ? dwFlags.MOUSEEVENTF_MIDDLEDOWN : dwFlags.MOUSEEVENTF_MIDDLEUP; break; default: break; } return(new INPUT { type = type.INPUT_MOUSE, mi = new MOUSEINPUT { time = (int)x.Elapsed, dx = x.X, dy = x.Y, dwFlags = f, }, }); } }