我是个软件专业的大一新生,最近在做一个鼠标拦截的钩子,我用到了底层钩子,但是,钩子安装上去了却没有拦截,仅仅让鼠标的移动变慢了(是不是因为Windows的机制问题,看到一些教程上说如果反应时间太长久忽略),求高手解答!!!主程序调用安装钩子函数,然后延时1分钟后自动卸载钩子。
#define _WIN32_WINNT 0X0500
#include <windows.h>
#include <stdio.h>
#include "mouseh.h"
#define DllExport extern "C"__declspec(dllexport)HHOOK glhHook=NULL;
HHOOK glhHookend=NULL;
HINSTANCE glhInstance=NULL;
BOOL APIENTRY DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(lpReserved);
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH: break;
} glhInstance=(HINSTANCE)hInstance; return TRUE;
}
LRESULT WINAPI MouseProc(int nCod,WPARAM wparam,LPARAM lparam )
{
return TRUE;
}
DllExport BOOL Starthook()
{
BOOL bResult=FALSE;
glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
if (glhHook!=NULL)
{
//MessageBox(NULL, "hook 安装成功咯 ", "傻冒 ",0);
bResult=TRUE;
} return bResult; }DllExport BOOL Stophook()
{
return UnhookWindowsHookEx(glhHook);
}
#define _WIN32_WINNT 0X0500
#include <windows.h>
#include <stdio.h>
#include "mouseh.h"
#define DllExport extern "C"__declspec(dllexport)HHOOK glhHook=NULL;
HHOOK glhHookend=NULL;
HINSTANCE glhInstance=NULL;
BOOL APIENTRY DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(lpReserved);
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH: break;
} glhInstance=(HINSTANCE)hInstance; return TRUE;
}
LRESULT WINAPI MouseProc(int nCod,WPARAM wparam,LPARAM lparam )
{
return TRUE;
}
DllExport BOOL Starthook()
{
BOOL bResult=FALSE;
glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
if (glhHook!=NULL)
{
//MessageBox(NULL, "hook 安装成功咯 ", "傻冒 ",0);
bResult=TRUE;
} return bResult; }DllExport BOOL Stophook()
{
return UnhookWindowsHookEx(glhHook);
}
打错了的确是WH_MOUSE_LL,这个是我测试不是底层钩子时候用到的
WH_MOUSE_LL不需要在DLL中吗?它不是个全局钩子么?
MSG msg;
while(GetMessageW(&msg,0,0,0)!=-1)DispatchMessageW(&msg);
它们没加是因为它们的界面就有消息循环