急!高分在线求,InitializeLpkHooks的定义以及调用示例,顶也加分

wkoji 2007-06-05 11:22:05
我想知道这个api到底是做什么用的,如何调用?
或者这里有没有人做过不写驱动,在应用层下用hook来截获非标准键盘的多媒体键?
已经确认hook_keyboard, hook_keyboard_ll都没有反应。

要多少分给多少,我还有几千
...全文
255 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinkui2008 2007-06-20
  • 打赏
  • 举报
回复
mark
ReverseEngineering 2007-06-20
  • 打赏
  • 举报
回复
高难度,顶一下
wkoji 2007-06-06
  • 打赏
  • 举报
回复
ding
yuelinsoft 2007-06-05
  • 打赏
  • 举报
回复
//<<////////////////////////////////////////////
//函数名{SetKeyboardHook}
//设置键盘钩子程序
//@Return [BOOL]:是否成功
//@Param hwnd[HWND]:安装键盘钩子程序窗体的句柄
//@Create: 2002年05月18日
//@Modify: 2002年05月18日
//>>////////////////////////////////////////////
__declspec(dllexport) BOOL SetLLKeyboardHook(HWND hwnd)
{
if(NULL==hwnd)
return FALSE;

if(NULL!=g_hWnd)
return FALSE;
g_KeyHook=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,g_hInst,0);
if(NULL!=g_KeyHook)
{
g_hWnd=hwnd;
return TRUE;
}
return FALSE;
}

//钩子函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL fEatKeystroke = FALSE;
if (nCode == HC_ACTION)
{
switch (wParam)
{
case WM_KEYDOWN: case WM_SYSKEYDOWN:
case WM_KEYUP: case WM_SYSKEYUP:
fEatKeystroke = ExistsSpecifyExcludeKey(wParam,lParam);
break;
}
}
//如果存在屏蔽
return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam,
lParam));
}

BOOL ExistsSpecifyExcludeKey(WPARAM wParam, LPARAM lParam)
{
BOOL bExists=FALSE;
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
for(int i=0;i<g_nExcludeKey;i++)
{
if(g_pExcludeKey[i].nAtl )
{
//要屏蔽Alt键 键盘键不是Alt键 continue。
if( !(p->flags & LLKHF_ALTDOWN) )
continue;
}
else
{
if( (p->flags & LLKHF_ALTDOWN) )
continue;
}
//control
if(g_pExcludeKey[i].nCtrl )
{
//要屏蔽ctrl键 键盘键不是ctrlt键 continue。
if( !(GetKeyState(VK_CONTROL) & 0x8000) )
continue;
}
else
{
if( (GetKeyState(VK_CONTROL) & 0x8000) )
continue;
}
if(g_pExcludeKey[i].nKey ==p->vkCode)
{
bExists=TRUE;
}
}
return bExists;
}
yuelinsoft 2007-06-05
  • 打赏
  • 举报
回复
http://www.codeguru.com/system/MMKeyboardHook.html
或许有帮助
wolf0184 2007-06-05
  • 打赏
  • 举报
回复
顶!!!
theendname 2007-06-05
  • 打赏
  • 举报
回复
up
wkoji 2007-06-05
  • 打赏
  • 举报
回复
ding
星羽 2007-06-05
  • 打赏
  • 举报
回复
有人反汇编看看吗:)
zeuskaaba 2007-06-05
  • 打赏
  • 举报
回复
UP!
很好奇LZ是怎么发现这个的,很好奇~~
theendname 2007-06-05
  • 打赏
  • 举报
回复
mark
fallinleave 2007-06-05
  • 打赏
  • 举报
回复
确实是未公开的API:
VOID STDCALL InitializeLpkHooks(FARPROC *hookfuncs);
wkoji 2007-06-05
  • 打赏
  • 举报
回复
怎么这么多高手都没人知道???
InitializeLpkHooks是user32.dll里的一个未公开函数,查msdn都查不到的,查google就只查到四条记录,而且最多只得到一个函数定义。
我不知道这个函数到底在hook什么,也不知道它的参数是个函数指针,这个函数指针的定义和参数是什么???
liehen8475 2007-06-05
  • 打赏
  • 举报
回复
up,学习
wkoji 2007-06-05
  • 打赏
  • 举报
回复
已经确认hook_keyboard, hook_keyboard_ll都抓不到这个键盘击键消息。
我写驱动去截获硬件的键盘中断可以抓到,
但是我现在希望在应用层用hook实现,找到有一个例子,但没有源代码。
分析它的dll,确定是调用了hook,此外最有关联的调用就是InitializeLpkHooks和GetMessageExtraInfo。所以希望能多了解一点这两个函数的作用和调用方式

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧