4689|12

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

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

希望有高手解答。
此帖出自WindowsCE论坛

最新回复

那个关机键是不是reset,如果那样的话就是一个硬件的问题了  sdk不会提供这样的函数吧  详情 回复 发表于 2008-7-30 14:37
点赞 关注
 

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不能捕捉很正常,一般的按键都是发送一个VK_的消息,而关机键是直接执行“关机”这个操作,所以捕捉不到。
此帖出自WindowsCE论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上的谢谢回答!

那么关机休眠事件有可能用钩子函数捕捉到吗?
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
搂1楼所说,WM系统的关机按键的消息没有发到应用,所以钩子是没有办法钩得到的。
除非改按键的驱动,将关机消息换成自定义的,这样钩子就可以处理了。
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
但目前有人能做到屏蔽关机键,说明可能存在这样的处理钩子。
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
屏蔽掉关机键,就一定要使用钩子??这是什么理论?
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

7
 
请问有其他技术可以做到屏蔽关机键吗?
此帖出自WindowsCE论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
好像以前有人讨论过这个话题
此帖出自WindowsCE论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

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

回复

80

帖子

0

TA的资源

一粒金砂(初级)

10
 
我跟踪了钩子了,问题是按下关机键时根本没有进入处理键盘消息的函数,直接关屏了。VK_F4这个键值我试过,确定不行。不知是否我程序的其他部分有错?在键盘消息处理函数里打了日志,结果是只有关机键捕捉不到键值。

如果你实现了屏蔽关机键,不知可否将源码发我一份?ayat_0l#hotmail.com,非常感谢!
此帖出自WindowsCE论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

11
 
这个和关机键设计原理有关,如果关机键发出了虚拟键值,你就可以监测到,如果没有发出键值,你就监测不到。不同设备设计原理不同,所以有的可以抓到,但是即使监测到,也来不及做什么操作,CPU直接睡了。
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

12
 
哦,原来是这样!楼上多谢了。
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

13
 
那个关机键是不是reset,如果那样的话就是一个硬件的问题了  sdk不会提供这样的函数吧
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表