• window 键盘 hook 使用


    #include "widget.h"
    #include <QApplication>
    
    HHOOK key_keep=NULL;
    HWND window_hwhd=NULL;
    
    LRESULT CALLBACK KeyboardProc( int nCode,  WPARAM wParam, LPARAM lParam )
    {
        KBDLLHOOKSTRUCT *pkbhs=(KBDLLHOOKSTRUCT*)lParam;
        if(nCode == HC_ACTION){
            if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL)& 0x8000 && GetAsyncKeyState(VK_SHIFT)&0x8000){
                qDebug() << "Ctrl+Shift+Esc";
            }else if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL) & 0x8000){
                qDebug() << "Ctrl+Esc";
            }else if(pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN){
                qDebug() << "Alt+Tab";
            }else if(pkbhs->vkCode == VK_ESCAPE && pkbhs->flags &LLKHF_ALTDOWN){
                qDebug() << "Alt+Esc";
            }else if(pkbhs->vkCode == VK_LWIN || pkbhs->vkCode == VK_RWIN){
                qDebug() << "LWIN/RWIN";
            }else if(pkbhs->vkCode == VK_F4 && pkbhs->flags & LLKHF_ALTDOWN){
                qDebug() << "Alt+F4";
            }
            qDebug() << QTime::currentTime().toString("hh:mm:ss zzz") << nCode << pkbhs->vkCode << pkbhs->time;
            return 1;//返回1表示截取消息不再传递,返回0表示不作处理,消息继续传递
        }
        return CallNextHookEx(key_keep, nCode, wParam, lParam);
    }
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
    
        window_hwhd=(HWND)w.winId();
        key_keep= SetWindowsHookEx(/*WH_KEYBOARD*/WH_KEYBOARD_LL,KeyboardProc,NULL,0/*GetCurrentThreadId()*/);
    
        return a.exec();
    }
    

      

    LIBS += -luser32
    

      

    全局监听键盘事件,不管界面是否激活状态,都可以获取键盘输入

  • 相关阅读:
    java字符串类型——String
    Arrays.asList(String[]).add(String) 报错
    Bigdecimal除法异常
    java使用AES-256-ECB(PKCS7Padding)解密——微信支付退款通知接口指定解密方式
    centos安装rocketMQ
    拦截器中获取不到controller注解问题
    springboot接收date类型参数
    mybatis
    mybatis generator对于同一个表生成多次代码的问题
    抓包工具之MitmProxy
  • 原文地址:https://www.cnblogs.com/larkin-cn/p/15102885.html
Copyright © 2020-2023  润新知