WinCE6.0只支持键盘钩子和鼠标(触摸屏)钩子

来源:互联网 发布:余弦相似性数据相似 编辑:程序博客网 时间:2024/05/21 17:49
        最近几天工作上的问题比较棘手,任务要求满足汽车多媒体设备上的测试要求。具体是要截获WinCE系统上的各种消息,当然包括系统消息和一些自定义的消息。

        这些消息是在一个主的应用程序和一些其它应用程序之间传递的,主的应用程序其实就是个界面而已,它来调动其它应用程序的开启,关闭和其它的操作。比如,播放DVD,打开蓝牙,收看TV节目。其中的一些操作消息是来自串口信息,再经过PostMessage和SendMessage来发送给主程序的,发送的虽然是WM_KEYDOWN消息,但是WinCE上怎么也Hook不到这些消息,经过反复试验和查找资料发现目前WinCE6.0只支持键盘钩子和鼠标钩子,WM_KEYDOWN虽然是键盘按下的消息,但是它没有触发键盘事件,所以在使用WH_KEYBOARD_LL来设置钩子时也是钩不到的,而这只能得到实际键盘的消息,看来下面的工作重心要转向截获串口信息上了。

        由于串口设备是独占的设备,要截获串口信息也并不容易,正尝试用虚拟串口驱动来实现,Eagle说可以追溯到系统的最底层上来实现,就是找到Arm上的关于对应串口的缓冲寄存器地址和其它几个比如线控制寄存器的地址,然后直接读取该地址下的数据内容,神不知鬼不觉的得到串口信息,再依据汽车多媒体串口消息通讯协议说明,翻译成windows消息,任务的大部分工作就搞定了。说起来容易,做起来感觉太难了,这要对硬件平台有充分的了解,之前虽然研究过一段时间的NXP的LPC2478,但现在也是力不从心。还是先在我的虚拟串口上下文章吧,努力!

原创粉丝点击