在线求助,跨进程拦截WM_SETFOCUS消息
直接上代码吧
LRESULT CALLBACK KeyProc ( int code, WPARAM wParam, LPARAM lParam)
{
MSG *lpMsg;
lpMsg = (MSG*)lParam;
if(lpMsg->message==WM_SETFOCUS)
{
::MessageBox(NULL,"拦截到消息","",MB_OK);
}
return CallNextHookEx (gkeyhook,code,wParam,lParam);
}
void __stdcall SetHidehook ( DWORD threadID)
{
gkeyhook = ::SetWindowsHookEx ( WH_GETMESSAGE,(HOOKPROC) KeyProc, ::GetModuleHandle ("xxx.dll"), threadID) ;
}
void __stdcall UnHidehook (HWND ahwnd)
{
UnhookWindowsHookEx (gkeyhook) ;
}
现在测试到,把if(lpMsg->message==WM_SETFOCUS)条件去掉,可以MessageBox弹出。加上条件就弹不出了,求助解决!!
先在此谢过。
LRESULT CALLBACK KeyProc ( int code, WPARAM wParam, LPARAM lParam)
{
MSG *lpMsg;
lpMsg = (MSG*)lParam;
if(lpMsg->message==WM_SETFOCUS)
{
::MessageBox(NULL,"拦截到消息","",MB_OK);
}
return CallNextHookEx (gkeyhook,code,wParam,lParam);
}
void __stdcall SetHidehook ( DWORD threadID)
{
gkeyhook = ::SetWindowsHookEx ( WH_GETMESSAGE,(HOOKPROC) KeyProc, ::GetModuleHandle ("xxx.dll"), threadID) ;
}
void __stdcall UnHidehook (HWND ahwnd)
{
UnhookWindowsHookEx (gkeyhook) ;
}
现在测试到,把if(lpMsg->message==WM_SETFOCUS)条件去掉,可以MessageBox弹出。加上条件就弹不出了,求助解决!!
先在此谢过。
...全文
相关推荐
WM_KILLFOCUS没有出现在PreTranslateMessage中
如何检测控件何时失去了焦点-简单的方法。
WinForm 嵌入 Word/Excel 实战:COM+SetParent 源码方案
在桌面应用开发中,将 Word、Excel 等 Office 文档嵌入 WinForm 窗体是常见需求,涉及 COM 自动化、窗口句柄重定向与 ActiveX 文档嵌入等基础技术。其原理是通过 COM 接口启动 Office 进程,利用 Win32 API 的 SetParent 将 Office 窗口挂载到 Panel 容器,并修剪窗口样式实现无缝嵌入。该方案技术价值在于不依赖第三方控件,兼容 64 位系统,可统一控制文档生命周期。典型应用场景包括合同管理、报表工具、MES 系统等桌面端。本文提供的 Wi
走出MFC子类化的迷宫子类化,SUBCLASSWINDOW ,MFC消息机制
走出MFC子类化的迷宫子类化,SUBCLASSWINDOW ,MFC消息机制
用VC实现特定编辑框上对回车键响应
本文讲述了在指定的编辑框上能响应从键盘输入回车键的一种方法,对进程内消息的解析、动态获取指定资源ID等技术也作了简要描述。
RichEdit 回车换行的2种方法
RichEdit响RichEdit响应回车换行RichEdit响应回车换行RichEdit响应回车换行应回车换行


