Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
        /// <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;
        }