Using Hook under WINCE

来源:互联网 发布:hill climbing 算法 编辑:程序博客网 时间:2024/05/20 01:46

Hook(钩子)是一种在消息到达目标窗口前进行截获的技术。使用钩子主要使用以下三个函数SetWindowsHookEx:创建钩子
CallNextHookEx:将消息传给钩子链中的下一个钩子
UnhookWindowsHookEx:释放钩子
对于创建钩子的函数SetWindowsHookEx,MSDN给出其原形如下:

HHOOK SetWindowsHookEx(
  int idHook,        // type of hook to install
  HOOKPROC lpfn,     // address of hook procedure
  HINSTANCE hMod,    // handle to application instance
  DWORD dwThreadId   // identity of thread to install hook for
);

这些在windows上面使用没有问题,但是在说明的最后,关于平台限制的地方,可以清楚的看到以下文字:Windows CE: Unsupported.
也就是说,wince并不支持钩子。
但是是不是不支持呢?只能说不直接支持钩子,用别的方法也是可以使用钩子函数的,那就是直接获取钩子函数地址,然后调用的方法。
g_hHookApiDLL = LoadLibrary(_T("coredll.dll"));
SetWindowsHookEx = (_SetWindowsHookExW)GetProcAddress(g_hHookApiDLL, _T("SetWindowsHookExW"));
如法炮制,可以获得其他两个函数的地址,有了这三个函数的地址,就可以类似这样使用了:
g_hInstalledLLKBDhook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardProc, hInstance, 0);
关于wince的钩子


参看WinCE的winbase.h,wince下可以使用以下三种:
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20
其中最有用的就是键盘钩子了。Wince里面定义其为20,而不是windows里面的14,因此调用时要注意。
关于键盘钩子回调函数keyboardProc,它里面的几个参数并不像MSDN里面提到的KeyboardProc那样:
LRESULT CALLBACK KeyboardProc(
  int code,       // hook code
  WPARAM wParam,  // virtual-key code
  LPARAM lParam   // keystroke-message information

按照说明,wParam应该存的是虚拟键信息。然而事实上,这三个函数中,第二个是用来指示是键按下还是弹起,第三个参数lParam才是真正存储的按键信息数据。它存储的是一个KBDLLHOOKSTRUCT结构体指针。这个结构体定义如下:
typedef struct {
    DWORD vkCode;
    DWORD scanCode;
    DWORD flags;
    DWORD time;
    ULONG_PTR dwExtraInfo;
} KBDLLHOOKSTRUCT;
结构体里面才是真正的按键信息。

 

http://www.codeproject.com/KB/mobile/KeyboardhooksWinCE.aspx

http://www.codeproject.com/KB/mobile/wincekbhook.aspx

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老房子拆了重建怎么办 加了差的汽油怎么办 事业单位未满5年怎么办 小学孩子不会制订学习计划怎么办 忘记提交原创怎么办百度熊掌号 计算机一级报名表填错了怎么办 离婚了不给孩子生活费怎么办 点击爱奇艺系统提示停止运行怎么办 电视机图像颜色变了怎么办 10万签约被拒怎么办 钢琴弹奏中的折指怎么办! 吉他琴头旋钮将琴头扭坏了怎么办? 1岁幼儿不爱吃饭怎么办 3岁幼儿不爱吃饭怎么办 4岁幼儿不爱吃饭怎么办 买票买了点映 怎么办 一年级孩子注意力不集中怎么办 孩子上一年级注意力不集中怎么办 普宁二中初一新生住宿怎么办 小学入学普查错过了怎么办 初一的孩子不爱学习怎么办 初一孩子出现厌学情况怎么办 客人要求我们代办事项时怎么办 客人要求我们代办事项应该怎么办 想家了特别想哭怎么办 把友谊看得太重怎么办 高一新生数学差怎么办 如果好朋友觉得你成熟阴暗怎么办 被同学抓住把柄敲诈怎么办 初一学生字写的不好怎么办 初二学生字写不好怎么办 宝宝流鼻涕怎么办最简单方法 论文查重中参考文献重复率高怎么办 表格里一行字多怎么办 写作文没有拿稿纸怎么办? 纬创面试英语差怎么办 wifi只有两个人连很差怎么办 孩子写作文老是离体怎么办 高一语文阅读理解不好怎么办 80后90后中国怎么办 小学生毕业了班级家长微信群怎么办