全局监控剪贴板
思路,DLL全局APIhook,在应用层做的话比较简单,但是可能会有很多情况无法实现。
1钩子
---- 在Windows系统中,钩子(hook)是一种特殊的消息处理机制。勾子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的勾子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。
多多查看msdn
HHOOK SetWindowsHookEx(
int idHook, // 类型的钩子安装
HOOKPROC lpfn, // 对应钩子的消息处理过程
HINSTANCE hMod, // 全局时需要的DLL句柄
DWORD dwThreadId //线程ID号
);
全局钩子
孙鑫的光盘视频教材里有,讲的很详细。
DLL工程 Hook.dll
导出函数
在MFC下导入该DLL,并使用SetHook函数开始屏蔽键盘信息
动态导入dll
ApiHook
API 比全局钩子要难~~~把windows核心编程 看了好几遍,书中的代码改了又改才能够实现简单的APIhook,现在还存在很多问题。
包含的类
APIHOOK.H
APIHOOK.CPP
VS2008下编译代码如下
遇到的问题
1。在cmd下无法使用键盘钩子,MS在控制台下的按钮是中断信号,不是简单的键盘响应。而且用WH_KEYBOARD钩子时只针对GDI的程序才能执行
2。全局HOOKapi对桌面进程支持不好,经常报错。