захватывать нажатия клавиш в окнах - PullRequest
2 голосов
/ 08 февраля 2011

Возможно ли даже создать (в JAVA) приложение, которое выполняет нажатия клавиш на любом приложении в Windows (не в приложении Java само по себе)? !!

Ответы [ 5 ]

2 голосов
/ 08 февраля 2011

Да, я считаю, что это возможно, но вам придется использовать JNI для этого, поскольку для этого требуется использование Windows API, как описано здесь .

1 голос
/ 08 февраля 2011

Да, через JNI с использованием Windows API. Но он не будет переносимым.

0 голосов
/ 08 февраля 2011

Во-первых, это правильно, что вы можете захватывать события только в окне приложения Java.Во-вторых, неправильно, что ваша проблема может быть решена только с использованием JNI API.Я попробовал следующий трюк.

Создание прозрачного полноэкранного окна.Захват событий на нем.Когда вы захватили нажатие клавиши, быстро исчезнет окно и смоделируйте нажатие той же клавиши, используя робот.Затем снова создайте прозрачное полноэкранное окно.

Это уродливый трюк, но это чистая Java, и пользователь ничего не видит.Удачи.

0 голосов
/ 08 февраля 2011

Ух ты ... посмотри, как люди отвечают ..
3 минуты назад кто-то предложил JNI.

Да, с помощью JNI с использованием Windows API.Но он не будет переносимым.

1 минуту назад кто-то еще подумал ответить тоже ...

Да, я верю, что это возможно, но вам придетсяиспользуйте JNI для этого, так как для этого требуется использовать Windows API, как описано здесь.

24 секунды назад кто-то еще тоже думал об этом ...

Java сама по себене имеет возможности выполнять подобные вещи.Вы должны использовать JNI для создания нативной библиотеки DLL с помощью API-интерфейса Windows, который будет вызываться вашим Java-кодом через метод System.loadLibrary (строковое имя_библиотеки).
Используйте JNI чувак ..: D

Нам нужно что-то в SF, чтобы предотвратить это !!Если кто-то уже предложил JNI, другие не должны иметь возможность публиковать то же самое. Пусть они добавят к комментарию или добавят комментарий к уже существующему комментарию .. !!

edit - и да, я жду отрицательных голосови критики здесь .. Пусть это начнется !!

0 голосов
/ 08 февраля 2011

Java сама по себе не имеет никаких средств для выполнения подобных вещей.

Вы должны использовать JNI , чтобы создать собственную DLL, используя Windows API, который будет вызываться вашимJava-код с помощью метода System.loadLibrary(String libname).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...