做了全局的鼠标钩子,能正常响应鼠标消息,但是如果打开网页,鼠标在网页上就捕获不到鼠标消息,各位老大
知道是什么原因吗?我已经加入了共享节,难道处理网页捕获鼠标消息需要特殊的处理?

解决方案 »

  1.   

    #include "stdafx.h"
    #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;
      

  2.   

    将long Ini_Time; 放入共享setion
      

  3.   

       不行啊,我发现在ie浏览器中鼠标消息截获不到,在firefox中又能截获了,为什么啊?