Мышь Событие - Мышь не движется как задумано - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь переместить курсор с помощью клавиш со стрелками на клавиатуре.В результате он будет двигаться, но только вверх и влево ... в верхний левый угол экрана.Он не движется вниз, как задумано.

Теперь, если я сделаю свой xSpeed ​​и ySpeed ​​больше 3, он будет работать, но движение вниз и вправо будет медленнее.Если я сделаю скорость 10, то результат будет незаметным, но это слишком быстро для того, для чего мне это нужно.

        [DllImport("User32.dll",EntryPoint = "mouse_event",CallingConvention = CallingConvention.Winapi)]
    internal static extern void Mouse_Event(int dwFlags,int dx,int dy,int dwData,int dwExtraInfo);

    [DllImport("User32.dll",EntryPoint = "GetSystemMetrics",CallingConvention = CallingConvention.Winapi)]
    internal static extern int InternalGetSystemMetrics(int value);

private void UpdateLoop()
    {
        if (_hotKeys.Contains(Keys.Up))
            MoveCursor(y: -YSpeed());
        if (_hotKeys.Contains(Keys.Down))
            MoveCursor(y: YSpeed());
        if (_hotKeys.Contains(Keys.Left))
            MoveCursor(x: -XSpeed());
        if (_hotKeys.Contains(Keys.Right))
            MoveCursor(x: XSpeed());
    }

private void MoveCursor(int x = 0, int y = 0)
    {
        int to_x = MousePosition.X + x;
        int to_y = MousePosition.Y + y;

        int screenWidth = InternalGetSystemMetrics(0);
        int screenHeight = InternalGetSystemMetrics(1);

        int mic_x = (int)Math.Round(to_x * 65536.0 / screenWidth);
        int mic_y = (int)Math.Round(to_y * 65536.0 / screenHeight);

        Mouse_Event(0x0001 | 0x8000, mic_x, mic_y, 0, 0);
    }

В этом случае XSpeed ​​и YSpeed ​​равны единице.

        public int XSpeed()
    {
        return int.Parse(tb_x.Text);
    }

    public int YSpeed()
    {
        return int.Parse(tb_y.Text);
    }

Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...