在三的基础上,我希望通过更得例子来加强学习。唯一不同的是,这次只关注DLL的核心代码。
代码一:
通过钩子获得鼠标的单击次数。细想一下,系统的各个进程不共享数据,在单个进程里或许完全可以不通过安装钩子来获取。但是如果面对的是多进程,选择钩子完全正确。
插一下:
WPARAM
wParam
lParam
MICROSOFT在使用时两种参数分别代表不同的含义和内容,WPARAM常常代表一些控件的ID或者高位底位组合起来分别表示鼠标的位置,如果消息的发送者需要发送某种结构的指针或者是某种类型的句柄时,习惯上用LPARAM来传递,可以参考各种控件的通知消息:可以查看:EN_CHANGE
案例监听的消息是WH_MOUSE,回调函数代码
LRESULT
{
if(nCode<0)
{
return
}
if(wParam==WM_LBUTTONDOWN)
{
count++;
}
return
}
代码二
介绍键盘钩子,记录用户的按键,用户监测的消息是WH_KEYBOARD,并将记录的按键存放在指定的文件中。
只是缺陷太多:
但我觉得这都不是问题,本来就什么都不懂,一直是在探索的前进的,在后面我会完善的。
//回调函数
LRESULT
{
if(nCode==HC_ACTION)
{
if(lParam
{
char
c[0]=wParam;
savelog(c);
}
}
return
}
//保存路径,结果很可能出现乱码
void
{
CTime
CString
name.Format("F:\\key_%d_%d.txt",tm.GetMonth(),tm.GetDay());
CFile
if(!file.Open(name,CFile::modeReadWrite))
{
file.Open(name,CFile::modeCreate|CFile::modeReadWrite);
}
file.SeekToEnd();
file.Write(c,1);
file.Close();
}
总结:
对于很多的代码是一个熟悉的过程。