阅读:2785回复:25
怎么捕获鼠标有没有键盘动作
我现在在写一个函数,用来监视系统是不是有外部输入动作,如果在一定时间后没有动作,就关闭背光,现在不知道如何得到鼠标键盘是否有动作,请问wince是否提供这样的API?
|
|
沙发#
发布于:2004-12-27 14:00
我就是不想改驱动而只调用wince的api来实现,有可能吗?
|
|
板凳#
发布于:2004-12-27 15:06
兄弟刚好弄反了吧,我现在要做的是当鼠标键盘有动作的时候通知我的线程,而不是线程在有动作时启动
|
|
地板#
发布于:2004-12-30 13:46
ok,谢谢各位,这个问题我已经搞定了,我是单独做成一个驱动的样子(实际上我把它放在触摸屏驱动中),启动一个线程,设置一个超时中断,并修改了鼠标键盘触摸的驱动,如果他们有动作,就setevent,这样我的线程就不是超时中断了,就不会关背光了。但是又出现了一个新的问题,由于我是把这个中断放在触摸驱动中,当系统没启动时候就插上鼠标键盘的话,启动过程中先加载的是usb host驱动,然后它发现了usbhid设备,加载了hid驱动,这时我的触摸屏驱动还没有加载,那么,鼠标有动作了也没法setevent了,我想问,怎样调整驱动加载顺序,使系统先加载touch驱动,然后加载usb驱动?
|
|
地下室#
发布于:2004-12-30 17:58
这位兄弟有做电源管理的经营吗,我也知道用PM就行了,可是我对pm一点了解都没有,能不能指点一下
|
|
5楼#
发布于:2005-01-04 16:59
我基本上是按照上面这位老兄的做法做了,但是有个问题,如果我写一个线程来监视外部输入,如果一段时间没有动作,背光肯定被关掉,这样即使在mediaplay运行的时候也会关掉,这样没有达到效果,如果不加监视线程,背光又关不调.这个怎么办
|
|
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信号一半的等待时间,如果是等待超时,则等待另一半的外部输入信号,如果还是超时,则关闭背光 辛苦你,帮我分析一下,为什么没有产生预期的效果? 非常感谢! |
|
7楼#
发布于:2005-01-05 10:42
说错了,我是这样想的,比如,我设置1分钟后关闭背光,那么,我先等待30s看有没有power信号发生,如果没有,就再等30s,看有没有外部输入发生,如果都没有,就关闭背光
|
|
8楼#
发布于:2005-01-05 11:11
我这样做的结果是系统等待一半的时间就直接关闭背光了,难道不是先等待WaitForSingleObject(hsysevent一半的时间,然后再等待WaitForSingleObject(gPenIntrEvent另一半的时间,而是两个信号同时发生了?
|
|
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就可以了,对不对?? |
|