HOOK技术--键盘鼠标钩子实例

这篇博客介绍了如何使用HOOK技术创建一个DLL项目,以实现键盘和鼠标的钩子监控。作者在DLL中定义了SetHook和UnSetHook两个接口,但遇到了卸载钩子时失败的问题。博客内容还包括了如何创建一个应用程序来动态加载DLL,并通过获取导出函数地址来调用安装和卸载钩子的流程。
摘要由CSDN通过智能技术生成

1.首先创建一个DLL项目,用以生成自定义的DLL文件,在DLL文件中对外有两个接口,安装钩子的函数SetHook和卸载钩子函数UnSetHook函数,对于

   这些函数由于需要导出,所以在工程项目的.h文件中需要声明这些函数需要导出。

//MouseKeyboardHook.h
#ifdef MOUSEKEYBOARDHOOK_EXPORTS
#define MOUSEKEYBOARDHOOK_API __declspec(dllexport)
#else
#define MOUSEKEYBOARDHOOK_API __declspec(dllimport)
#endif

extern "C" MOUSEKEYBOARDHOOK_API int SetHook( DWORD dwThreadId  );
extern "C" MOUSEKEYBOARDHOOK_API int UnSetHook(void);

    这里只有安装钩子函数有参数,该参数是线程ID号,这里需要注意,如果在调用DLL时发现找不到函数地址,那就需要加extern “C” 说明了,当时我就是没有加郁闷了很久才找到这个问题。我思考了一下,应该是DLL中我采用的是C编程语言,而我的调用该DLL的应用程序默认是C++,但是由于C和C++的OBJ的函数名格式不同,所以才会出现找不到函数地址的问题。是对于DLL的头文件按照这个格式就可以导出函数了。

//MouseKeyboardHook.cpp文件

#include "stdafx.h"
#include "MouseKeyboardHo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值