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
- Using Hook under WINCE
- using unrar under ubuntu
- using cling under cygwin
- using MSN under slackware 11.0
- WINCE hook技术实例
- WinCE 7 Mouse HOOK
- wince中的hook(钩子)用法
- wince中的hook(钩子)用法
- wince中的hook(钩子)用法
- wince中的hook(钩子)用法
- wince中的hook(钩子)用法
- wince中的hook(钩子)用法
- PuTTY + Xming, using gedit command under windows.
- Using ListView control under Win32 API
- Using GHDL for interactive simulation under Linux
- NSI Module Hook : Hiding Port Under Windows Vista
- Using keyboard hooks in WinCE
- wince中的hook(钩子)用法【转】
- 键盘使用
- centos root 密码丢失
- js 实现下拉列表的重复利用
- 用xmlhttp和Java session监听改善站内消息系统,实现站内消息弹出窗口
- Session监听的应用
- Using Hook under WINCE
- 云一样的心情
- [C#]关于事件驱动的SOCKET类的优化
- 用PL/SQL发送邮件 (2) 中文
- 張愛玲的舊事
- Delphi第三方控件大测评
- mysql的C语言接口的使用
- 意甲开球啦
- operator new 滴使用