SendInput срабатывает через раз и отправляет не те сообщения окну

Есть программа на C#, она с некоторыми промежутками времени кликает по окну. Буквально 3 дня назад все работало, с тех пор код не меняла, но кликать стал как-то странно.

    public static void clickLeftOnPoint(Point point)
    {
        if (!point.IsEmpty)
        {
            int x = Convert.ToInt32(point.X / 1.25);
            int y = Convert.ToInt32(point.Y / 1.25);
            Point offsetPoint = new Point(x + 5, y + 5);
            WinApi.mouseClickLeft(offsetPoint.X, offsetPoint.Y);
            Wait();
        }
    }

    public static void mouseClickLeft(int x, int y)
    {
        IntPtr hwnd = getWindow();
        SetForegroundWindow(hwnd);
        ShowWindow(hwnd, 1);
        UserHelper.Wait();
        ClickLeftMouseButton(hwnd, x, y);
    }

    public static void ClickLeftMouseButton(IntPtr hwnd, int x, int y)
    {
        x = CalculateAbsoluteCoordinateX(x);
        y = CalculateAbsoluteCoordinateY(y);
        INPUT[] inputs = new INPUT[3];
        inputs[0] = new INPUT
        {
            type = SendInputEventType.InputMouse,
            mkhi = new MouseKeybdhardwareInputUnion
            {
                mi = new MouseInputData
                {
                    dx = x,
                    dy = y,
                    mouseData = 0,
                    dwFlags = MouseEventFlags.MOUSEEVENTF_MOVE | MouseEventFlags.MOUSEEVENTF_ABSOLUTE
                }
            }
        };

        inputs[1] = new INPUT
        {
            type = SendInputEventType.InputMouse,
            mkhi = new MouseKeybdhardwareInputUnion
            {
                mi = new MouseInputData
                {
                    dx = x,
                    dy = y,
                    mouseData = 0,
                    dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTDOWN | MouseEventFlags.MOUSEEVENTF_LEFTUP
                }
            }
        };
        var result = SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(INPUT)));
        Console.WriteLine("Result: " + result);
    }       

В некоторые места клик проходит и я вижу сообщения (предварительно активирую окно): введите сюда описание изображения

Дальше начинается самое странное (отправляется сообщение WM_SETCURSOR, а сообщения кликов - нет): введите сюда описание изображения

Не сильна в WinApi, не особо понимаю, почему недавно работало, а теперь перестало. Пробовала использовать другие способы клика, но там вообще сообщения в окно не проходят.

Создается впечатление, что первый клик проходит всегда, а последующие как будто блокируются, визуально окно остается активным, но сообщения на клики игнорятся


Ответы (0 шт):