Java читать состояние ключа Windows - PullRequest
0 голосов
/ 04 мая 2018

Я хочу написать программу, которая воспроизводит sound каждый раз, нажимается кнопка на клавиатуре . (Даже если программа не в фокусе) Я использую JNativeHook, но когда я хочу добавить Key Listener, я получаю error из-за метода. getInstance не содержится в глобальном экране. :( У кого-нибудь есть идея?

Мой код:

package test1;
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;

public class jNativeHookExample implements NativeKeyListener {

    public void nativeKeyPressed(NativeKeyEvent e) {
        System.out.println(NativeKeyEvent.getKeyText(e.getKeyCode()));

        if (e.getKeyCode() == NativeKeyEvent.VC_F9) {
            //play sound;
        }
    }

    public void nativeKeyReleased(NativeKeyEvent e) {
        System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
    }

    public void nativeKeyTyped(NativeKeyEvent e) {
        System.out.println("Key Typed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
    }

    public static void main(String[] args) {
        try {
            /* Register jNativeHook */
            GlobalScreen.registerNativeHook();
        } catch (NativeHookException ex) {
            /* Its error */
            System.err.println("There was a problem registering the native hook.");
            System.err.println(ex.getMessage());
            System.exit(1);
        }

        GlobalScreen.getInstance().addNativeKeyListener(new jNativeHookExample());
    }
}

1 Ответ

0 голосов
/ 23 октября 2018

Этот код, вероятно, подходит для версии 1.1 jnativehook.

Начиная с версии 2.0, класс GlobalScreen не имеет метода getInstance(), а addNativeKeyListener() теперь является статическим, поэтому его следует вызывать непосредственно на GlobalScreen:

GlobalScreen.addNativeKeyListener(new jNativeHookExample());
...