• SetWindowsHookEx函数参数详解


    下系统钩子(键盘钩子,鼠标钩子等等)已是我们最长用的手段,要做钩子程序就必须用到下面这几个函数使用动态链接库(dll),即要实现全局系统钩子。这里就这几个函数的参数做一下详细的讲解。

    需要使用到WindowsAPI中的两个函数:
    一. HHOOK SetWindowsHookEx(
    int idHook,         //要安装的钩子类型 (参考下面的IdHook取值)
    HOOKPROC lpfn,   //钩子过程的指针 ,也即拦截到指定系统消息后的预处理过程,须定义在DLL中,
    HINSTANCE hMod,    //应用程序实例的句柄 如果是全局钩子, hInstance是DLL句柄(DllMain中给的模块地址。就是包含HookProc的动态库加载地址。否则给0就可以了,即勾自己。
    DWORD dwThreadId;   //要安装钩子的线程ID ,指定被监视的线程,如果明确指定了某个线程的ID就只监视该线程,此时的钩子即为线程钩子;如果该参数被设置为0,则表示此钩子为监视系统所有线程的全局钩子。);


    其中idHook参数可以取如下常量:
    WH_CALLWNDPROC     //窗口钩子,当系统向目标窗口发送消息时将触发此钩子
    WH_CALLWNDPROCRET     //窗口钩子,当窗口处理完消息后将触发此钩子
    WH_CBT   //当Windows激活、产生、释放(关闭)、最小化、最大化或改变窗口时都将触发此事件
    WH_DEBUG    //调试钩子
    WH_GETMESSAGE    //当往消息队列中增加一个消息时将触发此钩子
    WH_JOURNALPLAYBACK     //回放钩子,可以用于播放已记录的鼠标和键盘的操作
    WH_JOURNALRECORD     //记录钩子,可以用于记录鼠标和键盘的操作,木马程序可以使用此钩子窃取受控方在屏幕中敲入的密码
    WH_KEYBOARD     //当敲击键盘时将触发此钩子
    WH_MOUSE    //当有鼠标操作时将触发此钩子
    WH_MSGFILTER   //消息过滤钩子
    WH_SHELL   //Shell钩子
    WH_SYSMSGFILTER    //系统消息过滤钩子


    使用WH_CBT系统级钩子,当Windows激活、产生、释放(关闭)、最小化、最大化或改变窗口时都将触发此事件,我们在自定义消息函数中只处理关闭窗口的消息,在自定义的钩子函数若返回0则允许对窗体的操作,返回1则阻止窗口最大化、最小化等操作。另外此钩子必须使用动态链接库(dll)也就是钩子函数必须写在DLL里。


    二. BOOL UnhookWindowsHookEx(
    HHOOK hhk   //要注销的钩子句柄
    )

    配合这两个函数还要配合一些相应的回调函数,一个钩子就做好了。钩子的好处说不完。具体功能就看你发挥了。(编程世界http://www.ibiancheng.cn/原创)

  • 相关阅读:
    货币系统
    纸牌
    活动
    KKT-黑白球
    POJ2676-Sudoku
    POJ1717-Dominoes
    POJ1088-滑雪
    POJ1862-Stripies
    POJ2531-Network Saboteur
    2019.12.13 数的划分
  • 原文地址:https://www.cnblogs.com/smallmuda/p/1551190.html
Copyright © 2020-2023  润新知