波哥写的钩子教程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

从FSI到三层堆叠:一文搞懂车载CIS图像传感器技术演进与选型避坑

本文深入解析车载CIS图像传感器从FSI到三层堆叠的技术演进,揭示不同结构在低光性能、HDR表现和温度稳定性上的关键差异。通过实测数据对比,指导智能驾驶系统选型策略,帮助开发者规避成本与性能的常见陷阱,提升车载摄像头在复杂环境下的成像质量。

weixin_30689307的博客 101

钩子函数详解

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

Jikkee的博客 1479

LLM的MCP协议:初识MCP,搭建第一个MCP Server

MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。

Criss@陈磊 2万+

基于STM32的太阳能充电宝设计_资料编号31

系统硬件包括主控 STM32F103C8T6、0.96 OLED 显示屏、蜂鸣器、电源自锁开关、温度传感器 DS18B20、继电器、5 V DC 升压模块 、TB4056、18650锂电池、9 V太阳能板、稳压降压 5 V三极管。电源供应:锂电池为系统供电,9 伏太阳能板经 5 伏降压稳压三极管降压为 5 伏后传送到 TP4056,TP4056 为锂电池供电,因锂电池电压 3.7 伏,通过 5 伏 DC 升压模块升压到 5 伏为整个系统提供 5 伏电压。

嵌入式阿齐Archie 1万+

SetWindowsHookEx函数参数详解

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

yyzhan12ysx的博客 2314

【WRF-Urban数据集】 WRF 模型城市冠层参数 GloUCP 的使用

【数据集】 WRF 模型城市冠层参数 GloUCP 的使用

WW、forever的博客 483

钩子函数大全(2)

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

fengrenchang86的专栏 646

UG NX二次开发(C#)-建模-获取圆柱面信息(轴向、半径、深度)

获取圆柱面的信息前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 文章目录前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 前言 在一个项目中,需要遍历曲面,获得所有的圆柱面和圆柱面的信息,包括轴向、半径和圆柱面的深度。经过研究,采用uFModl.AskFaceData(face.Tag, out faceTypeInt, point, dir, box, out

GimiGimmy 4145

黑猫带你学Nand第11篇:万字长文带你了解NandFlash的数据保持原理及特性(Data Retention)

TATTAT:Trap-assistedtunneling,陷阱辅助隧穿,也有叫法称为电荷陷阱现象。这是一种物理现象,它发生在非挥发性存储器,如NAND闪存。在这种效应中,存储在闪存单元浮动栅极上的电荷(电子)由于隧道氧化物中捕获的电荷形成的电场影响,导致电荷通过隧道效应从一个能级隧穿到另一个能级,从而造成电荷泄漏。这种电荷泄漏是导致闪存数据保持问题的主要原因之一,因为它可以改变存储在闪存单元中的电荷量,进而改变其阈值电压水平,最终可能导致数据错误。在NANDFlash中,电荷被存储在浮置栅极上。

黑猫奥利奥的博客 1102

波哥写的钩子教程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

Camera2Demo

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

钩子函数介绍和总结

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

qq_43614246的博客 3万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

钩子函数教程

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

淡蓝色的帆 -编程空间 2111

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

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

zxy13826134783的博客 3381

用钩子截去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的博客 1035

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、付费专栏及课程。

余额充值