Моделирование мыши с помощью SendInput - PullRequest
0 голосов
/ 10 декабря 2018

Я создал приложение для автоматической обработки.
Он использовал SendInput в C #
Я тестировал этот код на своем ПК, он работает нормально.
Но теперь я установил это приложение на другом ПК, но это не такработает.
Я приложил некоторый фрагмент кода для понимания.

    public static void ClickLeftMouseButton()
    {
        INPUT mouseDownInput = new INPUT();
        mouseDownInput.type = SendInputEventType.InputMouse;
        mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTDOWN;
        SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));

        INPUT mouseUpInput = new INPUT();
        mouseUpInput.type = SendInputEventType.InputMouse;
        mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTUP;
        SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
    }
    public static void ClickRightMouseButton()
    {
        INPUT mouseDownInput = new INPUT();
        mouseDownInput.type = SendInputEventType.InputMouse;
        mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_RIGHTDOWN;
        SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));

        INPUT mouseUpInput = new INPUT();
        mouseUpInput.type = SendInputEventType.InputMouse;
        mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_RIGHTUP;
        SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
    }

    public static void SetMousePosition(int x, int y, int width, int height)
    {
        INPUT mouseMoveInput = new INPUT();
        mouseMoveInput.type = SendInputEventType.InputMouse;

        mouseMoveInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_MOVE | MouseEventFlags.MOUSEEVENTF_ABSOLUTE;

        mouseMoveInput.mkhi.mi.dx = 65535 * x / width;
        mouseMoveInput.mkhi.mi.dy = 65535 * y / height;

        SendInput(1, ref mouseMoveInput, Marshal.SizeOf(new INPUT()));
    }

Как вы можете видеть из фрагмента кода, я вызвал 2 функции.

    MouseSimulator.SetMousePosition(Convert.ToInt16(mAction.x_pos), Convert.ToInt16(mAction.y_pos), 1920, 1080);
    MouseSimulator.ClickLeftMouseButton();

Но нана другом ПК он не работает.
Я могу получить к нему доступ только через Chrome RDP или TeamViewer.
Я опубликовал свое приложение и установил этот пакет на этом ПК.
Но SendInput не работает.
Чтомне делать?
ОС Windows на 2 компьютерах (моем и других) - все Win10.

1 Ответ

0 голосов
/ 10 декабря 2018

Для запуска SendInput необходимы права администратора.

...