我按照孙鑫视频里写了个屏蔽鼠标消息的全局钩子,能够启动,但是却屏蔽不了鼠标消息,这是为什么...?照着做都出错..郁闷啊!
以下是dll的代码:
#include <windows.h>
#include <TCHAR.h>HHOOK g_hMouse=NULL;#pragma data_seg("MySec")
HWND g_hwnd=NULL;
#pragma data_seg()#pragma comment(linker,"/section:MySec,RWS")
LRESULT WINAPI MouseProc(
int nCode,
WPARAM wParam,
LPARAM lParam
)
{
return 1;
}bool SetHook(HWND hwnd)
{
g_hwnd=hwnd;
HINSTANCE hIns=(HINSTANCE)GetModuleHandle(_T("Lesson202"));
g_hMouse=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc,hIns,0);
if(g_hMouse==NULL)
{
MessageBox(NULL,_T("Error"),_T("Caption"),MB_OK);
return false;
}
return true;
}以下是对话框程序部分相关代码:
LoadLibrary(_T("Lesson202.dll"));
if(!SetHook(m_hWnd))
return false;
请高人帮忙看下这是什么问题?顺便问下VS08里怎么链接lib文件?(像vc6里面用对话框,VS08里我都用的#pragma comment(lib,"***.lib")).第1次发贴,希望好心人能帮忙解答,万分感谢!~
以下是dll的代码:
#include <windows.h>
#include <TCHAR.h>HHOOK g_hMouse=NULL;#pragma data_seg("MySec")
HWND g_hwnd=NULL;
#pragma data_seg()#pragma comment(linker,"/section:MySec,RWS")
LRESULT WINAPI MouseProc(
int nCode,
WPARAM wParam,
LPARAM lParam
)
{
return 1;
}bool SetHook(HWND hwnd)
{
g_hwnd=hwnd;
HINSTANCE hIns=(HINSTANCE)GetModuleHandle(_T("Lesson202"));
g_hMouse=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc,hIns,0);
if(g_hMouse==NULL)
{
MessageBox(NULL,_T("Error"),_T("Caption"),MB_OK);
return false;
}
return true;
}以下是对话框程序部分相关代码:
LoadLibrary(_T("Lesson202.dll"));
if(!SetHook(m_hWnd))
return false;
请高人帮忙看下这是什么问题?顺便问下VS08里怎么链接lib文件?(像vc6里面用对话框,VS08里我都用的#pragma comment(lib,"***.lib")).第1次发贴,希望好心人能帮忙解答,万分感谢!~
if(!SetHook(m_hWnd))
return false; 你检查LoadLibrary的返回值了吗?你肯定加载DLL成功了?
应该用底层钩子,并且要写在DLL中。
我改成WH_MOUSE_LL可以屏幕了~不过好像过头了...动都不能动,有办法让它可以移动,但是屏蔽buttondown一类的消息吗?还有怎么给你分?
对了还有视频用的WH_MOUSE为什么可以屏幕所有进程的鼠标消息,而我要用WH_MOUSE_LL?能帮忙告诉我下吗?