ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:2785回复:25

怎么捕获鼠标有没有键盘动作

楼主#
更多 发布于:2004-12-27 11:57
我现在在写一个函数,用来监视系统是不是有外部输入动作,如果在一定时间后没有动作,就关闭背光,现在不知道如何得到鼠标键盘是否有动作,请问wince是否提供这样的API?
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-27 14:00
我就是不想改驱动而只调用wince的api来实现,有可能吗?
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-27 15:06
兄弟刚好弄反了吧,我现在要做的是当鼠标键盘有动作的时候通知我的线程,而不是线程在有动作时启动
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-30 13:46
ok,谢谢各位,这个问题我已经搞定了,我是单独做成一个驱动的样子(实际上我把它放在触摸屏驱动中),启动一个线程,设置一个超时中断,并修改了鼠标键盘触摸的驱动,如果他们有动作,就setevent,这样我的线程就不是超时中断了,就不会关背光了。但是又出现了一个新的问题,由于我是把这个中断放在触摸驱动中,当系统没启动时候就插上鼠标键盘的话,启动过程中先加载的是usb host驱动,然后它发现了usbhid设备,加载了hid驱动,这时我的触摸屏驱动还没有加载,那么,鼠标有动作了也没法setevent了,我想问,怎样调整驱动加载顺序,使系统先加载touch驱动,然后加载usb驱动?
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-30 17:58
这位兄弟有做电源管理的经营吗,我也知道用PM就行了,可是我对pm一点了解都没有,能不能指点一下
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-04 16:59
我基本上是按照上面这位老兄的做法做了,但是有个问题,如果我写一个线程来监视外部输入,如果一段时间没有动作,背光肯定被关掉,这样即使在mediaplay运行的时候也会关掉,这样没有达到效果,如果不加监视线程,背光又关不调.这个怎么办
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-05 10:38
我按照你的说法做了,发现在播放的时候还是关闭了背光,下面是我的代码:
HANDLE hsysevent=OpenEvent(EVENT_ALL_ACCESS,FALSE,_T("PowerManager/SystemIdleTimerReset"));
BacklightDrvGetRegistryData();
TimeOut = Backlight_ACTimeOut;
if(TimeOut)
{
      if(WaitForSingleObject(hsysevent, 500*TimeOut)==WAIT_OBJECT_0)
     {
}
else
{
DWORD RetValue = WaitForSingleObject(gPenIntrEvent, 500*TimeOut);
………………

我的想法是,先等待power信号一半的等待时间,如果是等待超时,则等待另一半的外部输入信号,如果还是超时,则关闭背光
辛苦你,帮我分析一下,为什么没有产生预期的效果?
非常感谢!
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-05 10:42
说错了,我是这样想的,比如,我设置1分钟后关闭背光,那么,我先等待30s看有没有power信号发生,如果没有,就再等30s,看有没有外部输入发生,如果都没有,就关闭背光
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-05 11:11
我这样做的结果是系统等待一半的时间就直接关闭背光了,难道不是先等待WaitForSingleObject(hsysevent一半的时间,然后再等待WaitForSingleObject(gPenIntrEvent另一半的时间,而是两个信号同时发生了?
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-06 09:36
在common。reg中有如下话:
; This registry setting tells GWES to signal the Power Manager
; when user input devices are active.  GWES will reset this activity timer
; whenever it dequeues any type of input event (keyboard, mouse, or
; touch) from its internal queue.
[HKEY_LOCAL_MACHINE\SYSTEM\GWE]
    "ActivityEvent"="PowerManager/ActivityTimer/UserActivity"÷
我的英文不好,不知道是不是这个意思:这个注册表信息设置告诉gwes当系统有外部输入时,告诉PM,如果时这样的话,那么我只需要检测这个PowerManager/ActivityTimer/UserActivity就可以了,对不对??
游客

返回顶部