Имитация щелчка мышью в Java в DirectX Game
В настоящее время я использую Java Robot Class в игре DirectX, запрограммированной на C++. Я могу успешно использовать метод mouseMove класса Robot, но когда я пытаюсь использовать событие ввода левой кнопкой мыши, ничего не происходит. Я пробовал разные промежутки времени между выпуском и нажатием безрезультатно. Примечание. В настоящее время я использую Eclipse в режиме администратора. Вот код:
public class test {
public static void main(String [] args) throws AWTException, I nterruptedException{
Robot r = new Robot();
Thread.sleep(3000);
for(int i = 0; i<20; i++){
r.mouseMove(100+i*50, 550);
Thread.sleep(1);
}
Thread.sleep(1000);
r.mousePress(InputEvent.BUTTON1_MASK);
Thread.sleep(50);
r.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(50);
r.mousePress(InputEvent.BUTTON1_MASK);
Thread.sleep(50);
r.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(50);
}
}
Любая идея о том, как получить щелчок мыши, чтобы зарегистрироваться?
1 ответ
В некоторых играх вы просто не можете этого сделать. Зависит от движка и реализации, например, в играх с исходным движком ваши события будут регистрироваться (вероятно, исходя из моего примера опыта:CS:GO), но нереальные игры движка могут ничего не регистрировать.
Разработчики игр очень часто блокируют некоторые вызовы WIN32 mouse_event, что и используется в Robot API. Так что вы не можете ничего сделать, чтобы обойти это (с помощью Robot api).