专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WinCE

WINCE中的钩子函数能捕捉到关机键按下的消息吗?该怎么解决

发布时间:2010-06-13 22:23:26 文章来源:www.iduyao.cn 采编人员:星星草
WINCE中的钩子函数能捕捉到关机键按下的消息吗?
写了一个钩子函数,上下左右键的截获和执行自定义程序都可成功。但是只有关机键按下的消息始终无法拦截。不知有无前辈实现了这个功能?

关键代码如下:

……
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真机,均如此。真机上一按下关机键必然进入休眠状态,调试时按下则断开连接,十分之郁闷。

希望有高手解答。

------解决方案--------------------
这个和关机键设计原理有关,如果关机键发出了虚拟键值,你就可以监测到,如果没有发出键值,你就监测不到。不同设备设计原理不同,所以有的可以抓到,但是即使监测到,也来不及做什么操作,CPU直接睡了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: