Fuga D Minor
-
Автор темы
- #1
Привет!
Из любопытства пробую реализовать бота, который будет управлять игрой.
Столкнулся с проблемой - получается менять положение мыши и инициировать клик в системе, но когдаактивно окно игры - мыш не двигается и не происходит клик. То есть в самой итгре клик не работает, но если открыть просто олюбое окно winodws или какой нибудь paint - все работает.
Для реализации движения мыши и клика использовал библиотеку user32.dll
Вот примерно так:
И вот так использование
Пытался пробовать реализовать по другому, через Directinput или RawInput - но найденный мною средства позволяют только получать ввод пользователя, а не эмулировать ввод с устройства.
Посдкажите как в игре я могу эмулировать ввод мыши?
Из любопытства пробую реализовать бота, который будет управлять игрой.
Столкнулся с проблемой - получается менять положение мыши и инициировать клик в системе, но когдаактивно окно игры - мыш не двигается и не происходит клик. То есть в самой итгре клик не работает, но если открыть просто олюбое окно 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))); // Отпускание
Посдкажите как в игре я могу эмулировать ввод мыши?