使用键盘钩子(不用DLL)

#define WH_KEYBOARD_LL     13

定义一个钩子函数
LRESULT CALLBACK HookFun(int nCode, WPARAM wParam, LPARAM lParam);

HHOOK g_hHook = NULL;

首先要安装钩子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, HookFun, GetModuleHandle(NULL), NULL);
if(g_hHook == NULL)
 AfxMessageBox("hook failure!");


在程序结束时要卸载钩子
UnhookWindowsHookEx(g_hHook);

钩子函数的实现
LRESULT CALLBACK HookFun(int nCode, WPARAM wParam, LPARAM lParam)
{
  CWPSTRUCT* p = (CWPSTRUCT*) lParam;
 if (nCode == HC_ACTION)
 { 
  switch (wParam) //wParam中是消息ID
  { 
  case WM_KEYDOWN: 
   {  
      if(p->lParam == 'l' || p->lParam == 'L') 
      {
           // 'l' 键被按下 
            //do somthing
       }
    
    if(p->lParam == VK_ESCAPE)
    {//用户按下了Esc
      //do somthing
    }  
  } 
 }
 return CallNextHookEx(NULL, nCode, wParam, lParam);
}

posted on 2006-10-30 14:10 永遇乐 阅读(2061) 评论(2)  编辑 收藏 引用 所属分类: Windows MFC

评论

# re: 使用键盘钩子(不用DLL) 2012-05-24 11:46 KAGTiii

试过,没用  回复  更多评论   

# re: 使用键盘钩子(不用DLL)[未登录] 2014-11-28 09:47 np

@KAGTiii
太感谢你了,在网上找了n遍试过n遍,折腾了我好多天,都没成功,谢谢  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(6)

随笔分类

推荐Blog

友情链接

搜索

最新评论

阅读排行榜