• WinAPI——SetWindowsHookEx设置钩子说明


    提示: 如果要设置系统级钩子, 钩子函数必须在 DLL 中.

    SetWindowsHookEx(
      idHook: Integer;   {钩子类型}
      lpfn: TFNHookProc; {函数指针}
      hmod: HINST;       {包含钩子函数的模块(EXE、DLL)句柄; 一般是 HInstance; 如果是当前线程这里可以是 0}
      dwThreadId: DWORD  {关联的线程; 可用 GetCurrentThreadId 获取当前线程; 0 表示是系统级钩子}
    ): HHOOK;            {返回钩子的句柄; 0 表示失败}
    
    //钩子类型 idHook 选项:
    WH_MSGFILTER       = -1; {线程级; 截获用户与控件交互的消息}
    WH_JOURNALRECORD   = 0{系统级; 记录所有消息队列从消息队列送出的输入消息, 在消息从队列中清除时发生; 可用于宏记录}
    WH_JOURNALPLAYBACK = 1{系统级; 回放由 WH_JOURNALRECORD 记录的消息, 也就是将这些消息重新送入消息队列}
    WH_KEYBOARD        = 2{系统级或线程级; 截获键盘消息}
    WH_GETMESSAGE      = 3{系统级或线程级; 截获从消息队列送出的消息}
    WH_CALLWNDPROC     = 4{系统级或线程级; 截获发送到目标窗口的消息, 在 SendMessage 调用时发生}
    WH_CBT             = 5{系统级或线程级; 截获系统基本消息, 譬如: 窗口的创建、激活、关闭、最大最小化、移动等等}
    WH_SYSMSGFILTER    = 6{系统级; 截获系统范围内用户与控件交互的消息}
    WH_MOUSE           = 7{系统级或线程级; 截获鼠标消息}
    WH_HARDWARE        = 8{系统级或线程级; 截获非标准硬件(非鼠标、键盘)的消息}
    WH_DEBUG           = 9{系统级或线程级; 在其他钩子调用前调用, 用于调试钩子}
    WH_SHELL           = 10; {系统级或线程级; 截获发向外壳应用程序的消息}
    WH_FOREGROUNDIDLE  = 11; {系统级或线程级; 在程序前台线程空闲时调用}
    WH_CALLWNDPROCRET  = 12; {系统级或线程级; 截获目标窗口处理完毕的消息, 在 SendMessage 调用后发生}
  • 相关阅读:
    select和epoll的区别
    Epoll导致的selector空轮询
    2.集合框架中的泛型有什么优点?
    java的语法基础(二)
    17-文本属性和字体属性
    15-浮动
    16-margin的用法
    14-块级元素和行内元素
    12-简单认识下margin
    day15 什么是递归/递归与回溯
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/5600658.html
Copyright © 2020-2023  润新知