У меня есть игра, в которой используется FPC и мое приложение. Игры блокируют курсор в центре экрана и просто перемещают камеру в игру при перемещении мыши. Мне нужно переместить курсор в указанную точку на экране (в игре). Я пробовал SetCursorPos
, SendInput
, mouseevent
и Cursor.Position
, но никто из них не делал этого. Только этот код (я нашел его где-нибудь, но я не могу найти его снова;)) переместил мышь, но к неправильному positon (другие функции не сделали ничего, если игра была на вершине):Перемещение курсора в указанную позицию в другом приложении
private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
private const int MOUSEEVENTF_MOVE = 0x0001;
public static void MoveTo(float x, float y)
{
float min = 0;
float max = UInt16.MaxValue;
int mappedX = (int)Remap(x, 0.0f, Screen.PrimaryScreen.Bounds.Width, min, max);
int mappedY = (int)Remap(y, 0.0f, Screen.PrimaryScreen.Bounds.Height, min, max);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, mappedX, mappedY, 0, 0);
}
public static float Remap(float value, float from1, float to1, float from2, float to2)
{
return (value - from1)/(to1 - from1) * (to2 - from2) + from2;
}
I думаю, это потому, что курсор все еще заблокирован, поэтому функции все еще пытаются переместить мышь. У меня больше нет идей, как это сделать.
[EDIT]: Проблема в том, что в игре используется исходный вход. Как отправить ввод мыши, который будет работать, как ожидалось, даже если включена опция сырого ввода?
Если ни одна из этих функций не работает, очень вероятно, что в игре используется Raw Input или какой-либо другой механизм для чтения данных с мыши. Зачем вам это нужно? Вы пытаетесь написать код для автоматизации игры? –
Да, я. Программа также должна работать и в других программах, но для меня очень важно заставить ее работать в играх. Если он использует Raw Input - как это сделать? – g2556
Хорошо, ты был прав. Мне пришлось отключить опцию «Raw Input» в игре. Программа работает прямо сейчас, но сейчас игра в игру немного отличается. Поэтому я все еще хочу заставить программу работать, пока Raw Input включен Есть ли какие-либо способы сделать это? – g2556