WINCE中的钩子函数能捕捉到关机键按下的消息吗?(zhuan)

来源:互联网 发布:prize软件模板 编辑:程序博客网 时间:2024/05/17 03:05

写了一个钩子函数,上下左右键的截获和执行自定义程序都可成功。但是只有关机键按下的消息始终无法拦截。不知有无前辈实现了这个功能?

关键代码如下:

……
DLL中处理函数:
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) 

PKBDLLHOOKSTRUCT kb = (PKBDLLHOOKSTRUCT)lParam;
LRESULT lResult = 0;
      
   if ((nCode >= HC_ACTION) )
   {
   switch(kb->vkCode)
      {
         case VK_OFF:
                MYPROGRAM();
lResult = 1;
            break;
default:
    break;
      }
   }
  return lResult;
}
  
***************************************************************************************

EXE中拦截函数:
LRESULT CALLBACK LLKeyboardHookCallbackFunction(int nCode, WPARAM wParam, LPARAM lParam) 
{

    if((((KBDLLHOOKSTRUCT*)lParam)->vkCode) == VK_OFF) 

keybd_event(VK_OFF, 0, 0, 0);
keybd_event(VK_OFF, 0 , KEYEVENTF_SILENT ,0);
        }
 return FALSE;
}

只要将VK_OFF换成VK_UP、VK_DOWN等均可实现拦截消息并执行MYPROGRAM。开发环境是VS2005+WM5.0、WM2003仿真机,WM6.0真机,均如此。真机上一按下关机键必然进入休眠状态,调试时按下则断开连接,十分之郁闷。

我也用钩子啊,但可以屏蔽关机键,你可以跟踪钩子后得到的键值是=VK_F4,把这个键值给截获了就可以了

原创粉丝点击