java - 如何使用按键停止按键循环
问题描述
所以我在这里遇到了一个小问题。我正在制作一个程序,在按下预定义按钮后会按“W”(暂时)发送垃圾邮件,直到我再次按下该按钮。我正在使用 JNativeHook 库来检查按键,但是当我的程序开始到处发送垃圾邮件 W 时,这个库会停止检查按下的按钮。我怎么解决这个问题?我的程序有一些片段:
public class Buttons implements NativeKeyListener {
private ButtonsAction buttonsAction = new ButtonsAction();
public void nativeKeyPressed(NativeKeyEvent e) {
System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
if (e.getKeyCode() == NativeKeyEvent.VC_K) {
buttonsAction.startBot();
}
}
public void nativeKeyReleased(NativeKeyEvent e) {
}
public void nativeKeyTyped(NativeKeyEvent e) {
}
public void start() {
Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
logger.setLevel(Level.OFF);
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
System.err.println("There was a problem registering the native hook.");
System.exit(1);
}
GlobalScreen.addNativeKeyListener(new Buttons());
}
}
public class ButtonsAction {
private int state = 0;
public void startBot() {
try {
Robot robot = new Robot();
while (state == 0) {
robot.keyPress(KeyEvent.VK_W);
Thread.sleep(10);
}
} catch (AWTException | InterruptedException e) {
e.printStackTrace();
}
}
}
解决方案
问题是您使用相同的线程来执行机器人。您需要使用另一个线程。
推荐阅读
- python - 我想通过在画布小部件中创建一个框架来创建一个滚动条,但该条不显示
- java - 我想将扫描仪的整数输入限制在一个范围内
- python-3.x - Python 非阻塞套接字关闭:它会引发 BlockingIOError 吗?
- python - 不能完全理解用于创建模式的循环
- apache-kafka - 如何使用控制台消费者从特定点消费来自 kafka 主题的消息?
- django - 如何从 Django Graphene 中的 Tagulous 获取所有标签的列表
- javascript - 无法使用 Google App 脚本打开 FilePicker
- python - 使用 Keras 构建 LSTM+Conv2D 模型
- python - 如何使用 Python 和 TF、Keras 从照片(.jpg 格式)中识别数字?
- php - 在 PHP 中从前端(客户端)发送 HTTP 请求