java - JNA - 读取多个按键

标签 java windows winapi jna

当我的程序安装其他组件时,我使用 JNA 来阻止键盘。我想创建一个转义键组合,例如 CTRL + SHIFT + KEY。

如何检查这三个键是否被按下?当我检查 info.vkCode 是否有一个 key 时,它工作正常......

new Thread(new Runnable() {
    @Override
    public void run() {
        lib = User32.INSTANCE;
        HMODULE hMod = Kernel32.INSTANCE.GetModuleHandle(null);
        keyboardHook = new LowLevelKeyboardProc() {
        @Override
        public LRESULT callback(int nCode, WPARAM wParam, KBDLLHOOKSTRUCT info) {
            if (nCode >= 0) {
                //CTRL + SHIFT + F12, for example --- ERROR 
                if (info.vkCode == 160 && info.vkCode == 162 && info.vkCode == 123) {
                    lib.UnhookWindowsHookEx(hhk);
                }
                else {
                    return new LRESULT(1);
                }
            }
                return lib.CallNextHookEx(hhk, nCode, wParam, null);
            }
        };
        hhk = lib.SetWindowsHookEx(13, keyboardHook, hMod, 0);

        int result;
        MSG msg = new MSG();
        while ((result = lib.GetMessage(msg, null, 0, 0)) != 0) {
            if (result == -1) {
                break;
            }
            else {
                lib.TranslateMessage(msg);
                lib.DispatchMessage(msg);
            }
        }
        lib.UnhookWindowsHookEx(hhk);
    }
}).start();

最佳答案

lib.GetAsyncKeyState(VK_LCONTROL)

关于java - JNA - 读取多个按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44913572/

相关文章:

c++ - 无法写入注册表

java - 有没有办法通过使用 Intellij 添加外部方法调用来重构?

windows - 上层设备过滤驱动INF安装文件

c++ - Guid.NewGuid() 的 C++ 版本是什么?

c++ - 对话框窗口重新初始化问题

c++ - 如何确定流程的完整性级别?

java - netbeans 中的 checkstyle 插件,用于生成违反约定的 build.xml 目标规范

java - 在 Java 中,当我们从正在执行 Future 线程的函数返回时会发生什么?

java - 在选项卡标题上设置 Android 自定义字体

windows - 批处理命令如何为 set/p 制作列表