Вопрос Реализация движения мыши и клика

Fuga D Minor
Начинающий
Статус
Оффлайн
Регистрация
17 Май 2017
Сообщения
107
Реакции[?]
15
Поинты[?]
0
Привет!
Из любопытства пробую реализовать бота, который будет управлять игрой.
Столкнулся с проблемой - получается менять положение мыши и инициировать клик в системе, но когдаактивно окно игры - мыш не двигается и не происходит клик. То есть в самой итгре клик не работает, но если открыть просто олюбое окно winodws или какой нибудь paint - все работает.

Для реализации движения мыши и клика использовал библиотеку user32.dll
Вот примерно так:
C#:
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern uint SendInput(uint nInputs, ref Input pInputs, int cbSize);
И вот так использование

C#:
// Преобразование в абсолютные координаты (от 0 до 65535)
int absoluteX = (x * 65535) / screenWidth;
int absoluteY = (y * 65535) / screenHeight;

// Эмуляция перемещения мыши в абсолютные координаты
Input inputMove = new Input
        {
            type = 0, // Тип мыши
            mi = new MouseInput
            {
                dx = absoluteX,
                dy = absoluteY,
                mouseData = 0,
                dwFlags = MouseeventfMove | MouseeventfAbsolute,
                time = 0,
                dwExtraInfo = IntPtr.Zero
            }
        };

SendInput(1, ref inputMove, Marshal.SizeOf(typeof(Input))); // Перемещение мыши

// Эмуляция нажатия левой кнопки
Input inputDown = new Input
        {
            type = 0, // Тип мыши
            mi = new MouseInput
            {
                dx = absoluteX,
                dy = absoluteY,
                mouseData = 0,
                dwFlags = MouseeventfLeftdown | MouseeventfAbsolute,
                time = 0,
                dwExtraInfo = IntPtr.Zero
            }
        };

Input inputUp = new Input
        {
            type = 0, // Тип мыши
            mi = new MouseInput
            {
                dx = absoluteX,
                dy = absoluteY,
                mouseData = 0,
                dwFlags = MouseeventfLeftup | MouseeventfAbsolute,
                time = 0,
                dwExtraInfo = IntPtr.Zero
            }
        };

SendInput(1, ref inputDown, Marshal.SizeOf(typeof(Input))); // Нажатие
SendInput(1, ref inputUp, Marshal.SizeOf(typeof(Input)));   // Отпускание
Пытался пробовать реализовать по другому, через Directinput или RawInput - но найденный мною средства позволяют только получать ввод пользователя, а не эмулировать ввод с устройства.
Посдкажите как в игре я могу эмулировать ввод мыши?
 
Fuga D Minor
Начинающий
Статус
Оффлайн
Регистрация
17 Май 2017
Сообщения
107
Реакции[?]
15
Поинты[?]
0
Спасибо. Interceptor я уже находил. Проблема в том, что не хочется использовать драйвер сторонний. И так точно можнео делать.
Причина по которой я так думаю - утилита Clickermann. она не ставит никаких драйверов в системе, но успешно может работать с любым окном,. Клики, перемещения мыцши, отправка нажатий клавишь - все равботает. Инетерсно как в ней это реализовано и можно ли аналогичнореализовать в C#.
 
Сверху Снизу