这里是我的函数的原型:JOURNALRECORDPROC确定键按下
LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{
}
如何,我可以检查中,如果有ENTER或鼠标左键点击? 我想应该使用lParam,但我找不到。
这里是我的函数的原型:JOURNALRECORDPROC确定键按下
LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{
}
如何,我可以检查中,如果有ENTER或鼠标左键点击? 我想应该使用lParam,但我找不到。
作为MSDN says:
如果挂钩过程在范围返回消息WM_KEYFIRST到 WM_KEYLAST中,以下条件适用:
- 的的paramL构件EVENTMSG结构指定了p键的虚拟键码ressed。
- paramH成员EVENTMSG结构指定扫描码。
- 没有办法指定重复次数。这个事件总是被用来代表一个关键事件。
那么您就可以访问它是这样的:
LRESULT CALLBACK JournalPlaybackProc(int code, WPARAM wParam, LPARAM lParam)
{
// ... blah blah ...
if (code == HC_GETNEXT)
{
// examine eventmsg
EVENTMSG *pEvent = (EVENTMSG*)lParam;
// keypress
if (pEvent->message >= WM_KEYFIRST &&
pEvent->message <= WM_KEYLAST)
{
// decode key press
unsigned int uVirtualKeyCode = pEvent->paramL;
unsigned int uScanCode = pEvent->paramH;
// do your conditional checks here
if (uVirtualKeyCode == VK_ENTER)
{
// Enter key was pressed
}
}
else if (pEvent->message == WM_LBUTTONDOWN)
{
// left mouse click
}
else // ... add checks for other messages ....
}
// ... blah blah ...
}
根据MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644982% 28v = vs.85%29.aspx EVENTMSG ::从WM_KEYFIRST到WM_KEYLAST的消息 - 键盘,否则是其他内容。 –
这些日子的日志钩子非常难以实现,在尝试设置钩子时,几乎总会遇到访问被拒绝的错误。键盘记录器不是很受用户欢迎。需要绕过UIPI,这需要清单,证书和正确的安装位置。不要认为你在XP上看到的东西会在其他机器上很好地重现。 –