首页 > 解决方案 > 如何使用按键停止按键循环

问题描述

所以我在这里遇到了一个小问题。我正在制作一个程序,在按下预定义按钮后会按“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();
        }
    }
}

标签: java

解决方案


问题是您使用相同的线程来执行机器人。您需要使用另一个线程。


推荐阅读