C++如何禁用全局键盘钩子或者程序钩子?( 三 )


原型是 dll min(hh,Ulong What,) 。
参数:
:DLL实例句柄
什么:具体说明发生了什么 。
未使用的:保留参数
其中的值可以是:
:进程开始使用DLL 。
:进程正在释放DLL 。
:进程创建了一个新线程 。
:进程放弃了一个线程 。
一般来说,无论何时调用()函数,都必须根据内容采取适当的动作 。这个适当的操作什么也不做,但是它不返回非零值 。
()的下一步是设置钩子,处理键盘并释放钩子 。
2.创建一个头文件
就像应用程序使用的任何其他库函数一样,程序也必须在dll中包含函数的原型 。所有程序都必须包含.h的原因,所以我们现在创建一个头文件.h如下:
#" C " _ _ ()
void安装挂钩(int nCode);
调用 (int nCode,,);
void (void);
主要是用来让代码更高效,所以推荐使用 。但是导入数据时需要 。完成上述程序后,构建一个项目,比如,然后将.c插入试点项目并编译,这样就可以生成.dll和.lib 。
3.建立程序主文件
以上我们所做的一切工作都是为当前的主程序打下基础 。事实上,当我们完成Dll文件时,剩下的就是调用set hook函数: 。如果熟悉编程,必要时可以调用 。但是现在你必须记住,当你退出程序的时候,你需要调整来释放你加载的钩子函数 。现在我正在构建一个.cpp,将生成的.lib和.lib复制到一个目录中,构建一个项目 。插入钩子间谍 。CPP,挂钩dll dll,挂钩dll Lib和挂钩Dll 。h输入项目 。然后在创建窗口时设置钩子,退出程序时退出钩子函数 。例如:
案例:
安装钩子(TRUE);
打破;
案例WM _ ://终止程序 。
();
(0);
打破;
键盘记录器(键盘钩子)的C++实现
什么都不要说,先去源码 。
#包括.h
#包含.h
#包含一个字符串
#包括
#包括
在命名空之间使用std
(int Key) //确定键盘按的是什么键 。
{
字符串 =
//判断符号输入
const int按键掩码= 0x //键盘掩码常量
int是s hift = 状态(0x 10);//判断Shift键状态
bool IS =(IS shift按键掩码)= =按键掩码;//表示按下Shift键 。
if(Key =186 Key =222)
{
开关(钥匙)
{
案例186:
如果(为)
= ":";
其他的
= ";";
打破;
案例187:
如果(为)
= "+";
其他的
= " =
打破;
案例188:
如果(为)
密钥串=
其他的
= ",";
打破;
案例189:
如果(为)
钥匙串= " _
其他的
= "-";
打破;
案例190:
如果(为)
密钥串=
其他的
= ",";
打破;
案例191:
如果(为)
= "?";
其他的
= "/";
打破;
案例192:
如果(为)
= "~
其他的
密钥串=
打破;
案例219:
如果(为)
= " {
其他的
= "[";
打破;
案例220:
如果(为)
= " |
其他的
= " \ \
打破;
案例221:
如果(为)
= " }
其他的
= "]";
打破;
案例222:
如果(为)
=
其他的
=
打破;
}
}
//判断键盘的之一行
If (Key == ) //退出
= "[Esc]";
Else if (Key == VK_F1) // F1到F12
= "[F1]";
else if (Key == VK_F2)
= "[F2]";
else if (Key == VK_F3)
= "[F3]";
else if (Key == VK_F4)
= "[F4]";
else if (Key == VK_F5)
= "[F5]";
else if (Key == VK_F6)
= "[F6]";