我们知道钩子编程是DESKTOP当中相当常见的方式,不过WINCE下实现很麻烦。我前一段做了个这方面的小应用,给大家分享一下!
参看WinCE的winbase.h,wince下可以使用以下三种:
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20
wince并不支持钩子。但是是不是不支持呢?只能说不直接支持钩子,用别的方法也是可以使用钩子函数的,那就是直接获取钩子函数地址,然后调用的方法。
g_hHookApiDLL = LoadLibrary(_T("coredll.dll"));
SetWindowsHookEx = (_SetWindowsHookExW)GetProcAddress(g_hHookApiDLL, _T("SetWindowsHookExW"));
这样一个SETWINDOWSHOOKEX就得到了:)
如法炮制,可以获得其他两个函数的地址,有了这三个函数的地址,就可以类似这样使用了: g_hInstalledLLKBDhook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardProc, hInstance, 0);
有了这些函数的指针,就可以按照大多WINDOWS下编程的方法来做了。不过钩子一定要甚用,我现在做的东西曾经一度就是把HTC搞到要刷机才能使的。