OCX中使用钩子HOOK消息
2016-03-24 09:56
387 查看
使用背景
有些消息是只发给顶层窗口的,OCX被加载到网页中后,有些消息就接收不到,这时候需要我们用hook来截取消息。使用步骤
1.首先在OCX的cpp文件中声明一个全局变量:static HHOOK hHook=NULL;
2.定义hHook处理函数:
LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)
{
LPMSG lpMsg = (LPMSG) lParam;
if( (nCode >= 0) && (PM_REMOVE == wParam) &&
AfxGetApp()->PreTranslateMessage(lpMsg))
{
lpMsg->message = WM_NULL;
lpMsg->lParam = 0L;
lpMsg->wParam = 0;
}
// 将钩子消息传递给当前钩子链中的下一个钩子
return ::CallNextHookEx(hHook, nCode, wParam, lParam);
}
3.在OCX的"Oncreate"中添加如下代码:
hHook = ::SetWindowsHookEx(WH_GETMESSAGE, GetMessageProc,
AfxGetInstanceHandle(),GetCurrentThreadId());
4.释放资源,在OCX的"OnDestroy"消息中添加如下代码:
VERIFY(::UnhookWindowsHookEx(hHook));
相关文章推荐
- c#调用COM组件
- drupal中hook_menu()使用
- 将ocx文件转换成C#程序引用的DLL文件的办法
- C++实现inline hook的原理及应用实例
- C#使用钩子获得按键信息的方法
- C# Hook钩子实例代码 截取键盘输入
- 使用钩子如何锁定键盘的方法分享
- 基于C#实现的HOOK键盘钩子实例代码
- Inline Hook(ring3)的简单C++实现方法
- 解析WordPress中函数钩子hook的作用及基本用法
- Windows的钩子机制详解
- C++基于hook iat改变Messagebox实例
- CodeIgniter钩子用法实例详解
- python利用hook技术破解https的实例代码
- 为PostgreSQL添加插件
- EAT Hook
- 使用kprobes,截获execve系统调用,更谨慎的hook syscallTable的写法
- cracker's DS Hooking Tutorial
- sshpass的简介与使用
- Vue.js学习系列(四十六)-- 钩子函数