zoukankan      html  css  js  c++  java
  • C++:利用全局钩子实现键盘锁

    在家看网课,记笔记不方便。于是就想弄个键盘锁,方便学习(在寝室也好把外接键盘放上去打游戏)。

    其实这东西挺简单的,就三行代码。

    HHOOK hk;
    LRESULT CALLBACK kbproc(int nCod, WPARAM wParam, LPARAM lParam);
    
    void CMFCApplication1Dlg::OnBnClickedButton1()
    {    
        hk = SetWindowsHookEx(WH_KEYBOARD_LL, kbproc, 0, 0);//安装全局钩子
        
    }
    
    void CMFCApplication1Dlg::OnBnClickedButton2()
    {
        UnhookWindowsHookEx(hk);//卸载钩子
        
    }
    
    LRESULT CALLBACK kbproc(int nCod, WPARAM wParam, LPARAM lParam)
    {
        return 1;//返回一表示消息已经处理过了,应用程序就不会再处理了,相当于屏蔽消息
    }
    View Code

    下面我来说下钩子是怎么回事:
    正常情况下,我们在屏幕上的任何动作都会由操作系统生成待处理的消息,然后将它放入消息队列中等待程序处理。
    如下图:

    而HOOK就相当于是在操作系统和消息队列之间的一个劫匪,先经由它处理,然后这些东西才会被放入消息队列。
    如下图:

     如果你只想屏蔽一些按键的话,回调函数就不能返回1,应该返回下一个钩子。代码如下:

    //do something
    return CallNextHookEx(hk, nCod, 0, 0);
  • 相关阅读:
    mybatis概述
    Spring的配置分别是xml和java style
    JavaScript对象数据过滤、修改
    Spring框架
    设计模式-工厂方法模式(Fatory Patterm)
    简单的数据结构
    java链式操作
    centos7 php开发环境安装-composer
    centos7 php开发环境安装-php
    centos7 php开发环境安装-Apache
  • 原文地址:https://www.cnblogs.com/AD-milk/p/12496522.html
Copyright © 2011-2022 走看看