Имитация щелчка мышью в 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).

Другие вопросы по тегам