做了全局的鼠标钩子,能正常响应鼠标消息,但是如果打开网页,鼠标在网页上就捕获不到鼠标消息,各位老大
知道是什么原因吗?我已经加入了共享节,难道处理网页捕获鼠标消息需要特殊的处理?
知道是什么原因吗?我已经加入了共享节,难道处理网页捕获鼠标消息需要特殊的处理?
解决方案 »
- 关于dll代码里LoadLibrary后,运行报错的问题?
- 给VC/MFC的各路朋友散分,混个脸熟
- 换上用ADO连sql2000后就提示错误,请大侠看看什么回事!!!
- 如何彻底删除DBF中的记录
- 请问.在MFC中.怎么样才能使向导生成的视图文档结构程序不包括菜单?
- 请问:float数据的转换(见文章)
- CString 的类型转换?
- 运行个软件 防止其他人修改.exe文件的文件名,该用什么方法?
- 谁给我一个template的小例子???
- 在Dll中怎样调用exe模块中的theApp实现的一个函数?
- 请问调用timesetevent时什么时候执行TimeProc??
- 小小的困惑,MessageBox的 MB_COMPOSITE 和 MB_ABORTRETRYIGNORE 有什么区别?
#include "mouse.h"
#include "mmsystem.h"
#include "logwriter.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif#pragma data_seg(".SHARDAT")
static HHOOK hmou=NULL;
#pragma data_seg()
HINSTANCE hins;char szBuf[256];
char *p;
CString msg; long Rnew_Time;
long Ini_Time;#pragma data_seg("MouseShare")
HWND hwnd_MyWindow_mou=NULL;//发送消息的窗口的句柄
#pragma data_seg()#pragma comment(linker,"/section:MouseShare,RWS")//共享节////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CmouseApp, CWinApp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
LRESULT __declspec(dllexport)__stdcall CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
Rnew_Time=GetTickCount()/1000;
if((Rnew_Time-Ini_Time)<1)
{
OutputDebugString("鼠标钩子dll发送消息 !");
::SendMessage(hwnd_MyWindow_mou,WM_TO_MY_WINDOW_MOUSE,NULL,NULL); Ini_Time=Rnew_Time;
}
else
{
Ini_Time=Rnew_Time;
}
LRESULT RetVal = CallNextHookEx( hmou, nCode, wParam, lParam );
return RetVal;}BOOL __declspec(dllexport)__stdcall installhook(HWND window_hwnd_mou)
{ Ini_Time=GetTickCount()/1000; if (window_hwnd_mou!=NULL)
{
hwnd_MyWindow_mou=window_hwnd_mou;
hmou=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc,hins,0);
}
else
{
AfxMessageBox("窗口句柄错误");
return FALSE;
}
return TRUE;
}BOOL __declspec(dllexport) UnHook()
{
BOOL unhooked = UnhookWindowsHookEx(hmou);
return unhooked;
} BOOL CmouseApp::InitInstance ()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
hins=AfxGetInstanceHandle();
Ini_Time=GetTickCount()/1000; return TRUE;
}
BOOL CmouseApp::ExitInstance ()
{
return TRUE;
}
CmouseApp::CmouseApp()
{
}
CmouseApp theApp;