Windows Mobile 中的键盘钩子实战

来源:互联网 发布:数据库一致性问题 编辑:程序博客网 时间:2024/05/18 14:23

在需要用到SOFT1和SOFT2两个按键的时候, 也尝试了各种方案, 最后还是选个钩子函数, 但是在使用的过程中还是出现了一些问题的, 一些解决了一些还没有。下面有以下网上很多的实现。 且看这个

winceKBhook.h

winceKBhook.cpp

这个类似的实现网上一抄一大把。 我也搞了一个来实现, 还搞了一个DefHookProc函数, 因为懒得把CallNextHookEx时候要用的HHOOK公开了,所以一样的, hook filter里面就调用DefHookProc就好, 不需要调用CallNextHookEx了,一个参数我帮忙填写好了。

末了, 我尝试的实现了一下filter 函数:


己看了应该没有什么问题, 但是实际上跑的是时候发现几次都crash了。 当然这些crash都和Messagebox有关系, 都是弹出Messagebox的时候就程序再没有响应了!!! 糊涂了,难道是messagebox是不同的线程¥%¥……%, 想来想去还是至少有点, g_App.onKeyEvent如果里面弹出Messagebox这里岂不是阻塞了?? 可能这样的函数是不允许你阻塞在这里的。 所以决定改了, 用PostMessage发个异步的消息看看。


果然一把通过了:) 当然就像开始就说的一样, 还是有问题没有解决, 在Smartphone上有的手机直接SetWindowsHookEx失败! 这个除了程序签名估计没有什么办法。 anyway 继续探索吧。