/// <summary> /// マウスイベント共通 /// </summary> /// <param name="btn"></param> /// <param name="UpDown"></param> internal static void MouseEvent(int btn, bool UpDown, int delta) { // マウス操作実行用のデータ const int num = 1; w32.INPUT[] inp = new w32.INPUT[num]; inp[0].type = INPUT_MOUSE; inp[0].mi.dwFlags = 0; inp[0].mi.mouseData = 0; inp[0].mi.dx = 0; inp[0].mi.dy = 0; inp[0].mi.mouseData = 0; inp[0].mi.dwExtraInfo = 0; inp[0].mi.time = 0; switch (btn) { case 1: inp[0].mi.dwFlags = UpDown ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTUP; break; case 2: inp[0].mi.dwFlags = UpDown ? MOUSEEVENTF_RIGHTDOWN : MOUSEEVENTF_RIGHTUP; break; case 3: inp[0].mi.dwFlags = UpDown ? MOUSEEVENTF_MIDDLEDOWN : MOUSEEVENTF_MIDDLEUP; break; case 0x0A: inp[0].mi.dwFlags = MOUSEEVENTF_WHEEL; inp[0].mi.mouseData = WHEEL_DELTA * 1; break; case 0x0B: inp[0].mi.dwFlags = MOUSEEVENTF_WHEEL; inp[0].mi.mouseData = WHEEL_DELTA * -1; break; default: return; } // マウス操作実行 w32.SendInput(num, ref inp[0], System.Runtime.InteropServices.Marshal.SizeOf(inp[0])); return; }
/// <summary> /// キーコードを指定して処理 /// </summary> /// <param name="UpDown"></param> /// <param name="keyCode"></param> internal static void DirectKey(int keyCode, bool UpDown) { // 対応できるのは byte 範囲の仮想キーコードのみ if (keyCode < 0 || keyCode > 0xFF) { return; } const int num = 1; w32.INPUT[] inp = new w32.INPUT[num]; inp[0].type = INPUT_KEYBOARD; inp[0].ki.wVk = (short)keyCode; inp[0].ki.wScan = (short)w32.MapVirtualKey(keyCode, 0); inp[0].ki.dwFlags = KEYEVENTF_EXTENDEDKEY | (UpDown ? KEYEVENTF_KEYDOWN : KEYEVENTF_KEYUP); inp[0].ki.dwExtraInfo = 0; inp[0].ki.time = 0; w32.SendInput(num, ref inp[0], System.Runtime.InteropServices.Marshal.SizeOf(inp[0])); return; }