波哥写的钩子教程4

【VFB】钩子(VFB教程4-5) 此处为VisualFreeBasic编程教程(从零开始学或VB进阶)的子章节部分,全部目录点链接。Common Shared KeyboardHandle As HHOOK Function HookKeyboard(ByVal TID As Ulong ) As HHOOK '定义键盘钩子 KeyboardHandle = SetWindowsHookEx(WH_KEYBOARD,... 阅读详情


钩子技术(六)
来源: 任立波的日志
方法5  :  CBTProc Function

The CBTProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function. The system calls this function before activating, creating, destroying, minimizing, maximizing, moving, or sizing a window; before completing a system command; before removing a mouse or keyboard event from the system message queue; before setting the keyboard focus; or before synchronizing with the system message queue. A computer-based training (CBT) application uses this hook procedure to receive useful notifications from the system.

CBTProc钩子子程是和SetWindowsHookEx方法同时使用的、程序定义的或者库定义的回调函数。系统在下列事件发生之前调用该方法:

<!--[if !supportLists]-->1.  <!--[endif]-->激活、创建、销毁、最小化、最大化、移动窗体、改变窗体大小;

<!--[if !supportLists]-->2.  <!--[endif]-->完成系统命令;

<!--[if !supportLists]-->3.  <!--[endif]-->从系统消息队列中移除鼠标或者键盘事件;

<!--[if !supportLists]-->4.  <!--[endif]-->设置键盘焦点;

<!--[if !supportLists]-->5.  <!--[endif]-->同步系统消息队列。

CBT应用程序使用该钩子子程接收来自系统的有用的通知。

The HOOKPROC type defines a pointer to this callback function. CBTProc is a placeholder for the application-defined or library-defined function name.

HOOKPROC类型定义了指向该回调函数的指针。CBTProc是程序定义的或者库定义的方法名字。

Syntax

LRESULT CALLBACK CBTProc(     

    int nCode,

    WPARAM wParam,

    LPARAM lParam

);

Parameters 参数

nCode  :[in] Specifies a code that the hook procedure uses to determine how to process the message. If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx. This parameter can be one of the following values.

指定一个码值,钩子子程使用该值来决定如何处理消息。如果nCode小于0,钩子子程就必须将该消息传递给CallNextHookEx方法,自己不对消息做进一步的处理,并且应该返回由CallNextHookEx方法返回的返回值。该参数可以是以下值中的一个:

1.HCBT_ACTIVATE  :The system is about to activate a window. 系统即将创建一个窗体。

2.HCBT_CLICKSKIPPED  :The system has removed a mouse message from the system message queue. Upon receiving this hook code, a CBT application must install a WH_JOURNALPLAYBACK hook procedure in response to the mouse message. 系统已经将一个鼠标消息从系统消息队列中移除。一旦收到该钩子代码,CBT应用程序必须安装一个WH_JOURNALPLAYBAC钩子子程来响应鼠标消息。

3.HCBT_CREATEWND : A window is about to be created. The system calls the hook procedure before sending the WM_CREATE or WM_NCCREATE message to the window. If the hook procedure returns a nonzero value, the system destroys the window; the CreateWindow function returns NULL, but the WM_DESTROY message is not sent to the window. If the hook procedure returns zero, the window is created normally. 窗体即将被创建。系统在向窗体发出WM_CREATE 或者 WM_NCCREATE消息之前,调用该钩子子程。如果钩子子程返回非0值,表示系统销毁了窗体;CreateWindow方法返回Null,但是WM_DESTROY消息并不发送给窗体。如果钩子子程返回0,表示窗体正常被创建。

At the time of the HCBT_CREATEWND notification, the window has been created, but its final size and position may not have been determined and its parent window may not have been established. It is possible to send messages to the newly created window, although it has not yet received WM_NCCREATE or WM_CREATE messages. It is also possible to change the position in the z-order of the newly created window by modifying the hwndInsertAfter member of the CBT_CREATEWND structure.

在 HCBT_CREATEWND通知的时候,窗体已经被创建了,但是它的最终的大小和位置可能还没有被确定,它的父窗体也可能没有被创建起来。虽然一个新创建的窗体可能还没有接收到WM_NCCREATE或者WM_CREATE消息,但是向它发送消息是可能的。通过修改CBT_CREATEWND 结构体的hwndInsertAfter成员,改变新创建窗体的在Z轴次序的位置也是可能的。

4.HCBT_DESTROYWND :A window is about to be destroyed. 窗体即将被销毁。

5.HCBT_KEYSKIPPED :The system has removed a keyboard message from the system message queue. Upon receiving this hook code, a CBT application must install a WH_JOURNALPLAYBACK hook procedure in response to the keyboard message. 系统已经从系统的消息队列中移除了一个键盘消息。一旦接收到该钩子代码,CBT应用程序必须安装一个WH_JOURNALPLAYBAC钩子来响应键盘消息。

6.HCBT_MINMAX :A window is about to be minimized or maximized. 窗体即将被最小化或者最大化。

7.HCBT_MOVESIZE :A window is about to be moved or sized. 窗体即将被移动或者重置大小。

8.HCBT_QS  :The system has retrieved a WM_QUEUESYNC message from the system message queue. 系统已经收到了一个来自系统消息队列的WM_QUEUESYNC消息。

9.HCBT_SETFOCUS  :A window is about to receive the keyboard focus. 窗体即将接收键盘焦点。

10.HCBT_SYSCOMMAND :A system command is about to be carried out. This allows a CBT application to prevent task switching by means of hot keys.系统命令即将被执行。这允许CBT程序阻止通过快捷键来进行任务切换。

wParam :[in] Depends on the nCode parameter. 取决于参数 nCode

lParam :[in] Depends on the nCode parameter. 取决于参数 nCode

Return Value 返回值

The value returned by the hook procedure determines whether the system allows or prevents one of these operations. For operations corresponding to the following CBT hook codes, the return value must be 0 to allow the operation, or 1 to prevent it:

钩子子程的返回值取决于系统允许还是阻止这种操作。对于下列这些操作的CBT钩子代码,如果允许则返回值必须是0,如果阻止返回值必须是1。

 HCBT_ACTIVATE ;HCBT_CREATEWND ;HCBT_DESTROYWND ;HCBT_MINMAX ;HCBT_MOVESIZE ;HCBT_SETFOCUS ;HCBT_SYSCOMMAND

For operations corresponding to the following CBT hook codes, the return value is ignored:

对于下列这些操作的CBT钩子代码,返回值被忽略。

        HCBT_CLICKSKIPPED ;HCBT_KEYSKIPPED ;HCBT_QS
vc 局部钩子HOOK(线程钩子) HHOOK SetWindowsHookEx(   int idHook,        // type of hook to install  即钩子类型   HOOKPROC lpfn,     // address of hook procedure  指向钩子的指针,即钩子处理过程   HINSTANCE hMod,    // handle to application insta 阅读详情

相关推荐

钩子编程(HOOK) 安装进程内键盘钩子 (1)

[钩子编程(HOOK) 安装进程内键盘钩子]钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。

机器学习 5236

钩子详解

HHOOK SetWindowsHookEx(                                    //装载一个钩子             int idHook,                                            //描述被装载的钩子的类型,参数见下面    HOOKPROC lpfn,                      

djyangmaowei的专栏 2361

必看!wechat-article-exporter:轻松批量下载公众号文章

微信搜索“”关注公众号。在信息爆炸的时代,我们每天都会接触到大量优秀的微信公众号文章。有时候,我们想要将这些精彩的内容保存下来,以便日后回顾或者分享给更多的人。然而,微信公众号并没有提供直接的批量下载功能,这给我们带来了不少困扰。今天,我要给大家分享一款非常实用的软件——wechat-article-exporter,它能够帮助我们轻松地批量下载微信公众号文章,让你不再为文章的保存而烦恼。

王乐平 技术博客 4356

钩子函数详解

WINDOWS钩子函数的功能非常强大,有了它您可以探测其它进程并且改变其它进程的行为。   理论:   WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。 通过“钩挂”,您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时, WINDOWS都将调用该函数。一共有两种类型的钩子:局部的和远程的。   局部钩子仅钩挂您自己进程的事件。   远程的钩子还可以将钩挂其它进程发生的事件。远程的钩子又有

Jikkee的博客 1479

海思ISP实战:YUV Sharpen参数调试全解析

本文深入解析了在海思ISP平台上进行YUV Sharpen参数调试的实战经验。文章以海思3516EV300芯片为例,详细拆解了EdgeFiltStr、TextureFreq等核心参数的作用与协同策略,并重点阐述了如何通过ISO联动调试,在图像清晰度与噪声抑制之间取得最佳平衡,为图像调试工程师提供了宝贵的避坑指南和实战参考。

grape的博客 210

Duilib的简单使用(五、DuiDesigner/DuiEditor的下载编译)

一、前言 在Duilib的简单使用(一、duilib demo)中我们介绍了利用duilib简单的构造一个项目 在Duilib的简单使用(二、xml实现界面与业务分离)中我们介绍了XML在duilib中的使用 在Duilib的简单使用(三、界面逻辑交互)中我们已经知道如何简单的进行界面的交互 在Duilib的简单使用(四、换肤)中,我们提了一下Duilib强大的一键换肤功能。 通过之前的说明,我们知道duilib是通过xml来分离界面和业务逻辑的,但是xml如果不能预览,那每次敲一个再运行一下看看效果,这不

LyRics1996的博客 2889

SetWindowsHookEx函数参数详解

Windows系统钩子(键盘钩子,鼠标钩子等等)已是我们最长用的手段,要做钩子程序就必须用到下面这几个函数使用动态链接库(dll),即要实现全局系统钩子。这里就这几个函数的参数做一下详细的讲解。 需要使用到WindowsAPI中的两个函数: 一. HHOOK SetWindowsHookEx( int idHook,//要安装的钩子类型 (参考下面的IdHoo...

yyzhan12ysx的博客 2314

Windows本地部署Qwen3-14B实战指南:Ollama+Open WebUI零Docker方案

大语言模型本地部署是AI工程化落地的关键环节,其核心在于推理框架兼容性、硬件加速适配性与端到端稳定性。Ollama作为轻量级模型运行时,原生支持Windows DirectML与CUDA,规避了Docker/WSL2虚拟化开销和llama.cpp编译风险;Qwen3-14B则凭借128K上下文、Tool Calling原生支持及中文长文本结构化能力,成为政务、金融等场景首选。本文聚焦Windows平台真实约束——显存阈值、驱动版本匹配、路径编码兼容、离线知识库集成(RAG)等工程细节,提供经63台Windo

weixin_32136203的博客 413

钩子函数大全(2)

CallNextHookEx 函数功能:该函数发送挂钩信息给当前挂钩链中的下一个挂钩处理过程,一个挂钩处理过程可在对该挂钩信息进行处理之前或之后调用本函数.   函数原形:LRESULT CallNextHookEx(HHOOK hhk,int nCode,WPARAM wParam,LPARAM lParam);    参数: hhk:当前挂钩的句柄.一个应用

fengrenchang86的专栏 646

Python语言在工业控制中的简单应用

在工业控制中,经常需要对采集到的数据进行分析和处理,Python的这些库可以简化这一过程。传统的工业控制系统多依赖于专用的控制硬件和软件,但随着技术的发展,开放性和灵活性成为了新的需求焦点。还有,Python社区活跃,提供了大量的开源代码和模块,这对于工业控制领域来说是一个巨大的资产。Python作为一种高级编程语言,因其简洁的语法、强大的库支持和广泛的社区资源而在工业界获得了快速的发展和广泛的应用。在工业控制领域,Python的应用日益增多,这得益于其跨平台性、脚本语言的灵活性以及与硬件设备交互的能力。

2303_78014702的博客 1722

ABAP HANA BP主数据批导

SAPhana官方推荐的创建bp主数据的类是CL_MD_BP_MAINTAIN 客户的创建具体示例代码如下: DATA: LT_RETURN_MAP TYPE MDG_BS_BP_MSGMAP_T. DATA: LS_RETURN_MAP TYPE MDG_BS_BP_MSGMAP. DATA: LS_MESSAGE_MAP TYPE MDG_BS_BP_MSGMAP_KEY. DATA: LT_DATA TYPE CVIS_EI_EXTERN_.

IamRunjiang的博客 4143

波哥写的钩子教程3

方法4 :CallWndRetProc Function The CallWndRetProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function. The system calls this functio

windworst的专栏 433

PCL Fast Global Registration 快速全局配准(源码版)

Fast Global Registration(FGR)是一种经典的点云粗配准算法,已集成到Open3D和CloudCompare等软件中。本文介绍了该算法的源码实现及优化方法,包括如何通过修改源码直接读取点云进行配准,而不依赖文件中读取特征描述子。文章还提供了关键参数设置(如最大迭代次数、匹配距离等)。算法实现简单高效,未来计划发布基于纯PCL的版本。源码和论文链接已附上,供开发者参考。

点云侠的博客 383

钩子函数介绍和总结

Author:快来救救我 ps:快乐废宅 文章目录前言一、钩子函数(Hook)是什么?理解:特点:举例钩子类型二、使用步骤1.引入库2.读入数据总结 前言 我看了其他博客有些对钩子函数讲述的篇幅要不太长,要不太短,所以我打算写一个中等篇幅的,易于看完也能对它大体概况。我也会在后面附上参考的其他人的博客,想要看简短或者详细的,可以点击链接去看。 在开发当作有碰见过几次钩子函数但是一直对这个没有什么概念,所以特意来了解了解,如若有理解错误,请再底下评论,后续会持续更改~ 一、钩子函数(Hook)是什么? 理.

qq_43614246的博客 3万+

常用元器件使用方法13:物理层接口芯片DP83848的使用方法

介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示。 其主要区别是使用温度不同,如下图所示。 这2种芯片芯片网上均有销售,按理说DP83848C价格应该更加便宜,实际不然,DP83848I的价格低于DP83848C,考虑或与芯片的出货量...

snmplink的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

钩子函数教程

 钩子函数教程Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获

淡蓝色的帆 -编程空间 2111

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

钩子函数(键盘钩子C#)

该例子实现的效果是:拦截键盘的输入,如果输入的是B键或者是b键,就弹出消息框来表示一下拦截到了 步骤: 1 新建Winform应用程序,工程命名为HookDemo,把默认生成的窗体名称改为HookTest 2 新建一个类,名为Hook 编写代码如下: using System; using System.Collections.Generic; using System.Linq; u...

zxy13826134783的博客 3381

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

用钩子截去ALT+F4 用钩子关闭窗口

用钩子截去ALT+F4 =========================================================================== 以下在stdafx.cpp 中定义的全局变量和函数 应该在.h中声明 HHOOK g_hKeyboard = NULL; //钩子型全局变量 LRESULT CALLBACK KeyboardProc(in

mfmfmmf1的专栏 611

reactrouter4路由钩子_React Router 使用教程

真正学会 React 是一个漫长的过程。你会发现,它不是一个库,也不是一个框架,而是一个庞大的体系。想要发挥它的威力,整个技术栈都要配合它改造。你要学习一整套解决方案,从后端到前端,都是全新的做法。举例来说,React 不使用 HTML,而使用 JSX 。它打算抛弃 DOM,要求开发者不要使用任何 DOM 方法。它甚至还抛弃了 SQL ,自己发明了一套查询语言 GraphQL 。当然,这些你都可以...

weixin_39868414的博客 653

超详细的 pytest 钩子函数 之初始钩子和引导钩子来啦

钩子函数在 pytest 称之为 Hook 函数,它 pytest 框架的开发者,为了让用户更好的去扩展开发预留的一些函数。而预留的这些函数,在整个测试执行的生命周期中特定的阶段会自动去调用执行。如下图:关于 pytest 中的预留钩子,可以通过开发插件,和在 conftest.py 去实现这些钩子。每个钩子函数可以在多个插件中实现,每个钩子和执行的函数比是:1:N。

2301_78843735的博客 1036

OWL教程9 其他的钩子

OWL教程9 其他的钩子

jiafeitutu的博客 471

4,钩子的基本原理及使用

钩子的基本原理  钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入到系统。钩子的种类有很多,每一种钩子负责截获并处理相应的消息。钩子机制允许应用程序截获并处理发往指定窗口的消息或特定事件,其监视的窗口即可以是本进程内的也可以是由其他进程所创建的。在特定的消息发出,并在到达目的窗口之前,钩子程序先行截获此消息并得到对其的控制权。此时在钩子函数中就可以对截获的消息进行各种修改处理,甚至强

femalelover的专栏 5148
上一篇: 波哥写的钩子教程3
下一篇: API&nbsp;Hook完全手册
龍城狂霸拽爺
博客等级 码龄16年 10粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值