xp sp3中,鼠标键盘全局钩子无法实现的问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 22:06:49
在dll中编写钩子如下:
LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
return 1;
}

LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(VK_F2==wParam)
{
SendMessage(g_hWnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(g_hMouse);
UnhookWindowsHookEx(g_hKeyboard);
}
return 1;
}

void SetHook(HWND hwnd)
{
g_hWnd=hwnd;
g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook.dll"),0);
g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("Hook.dll"),0);
}

在exe文件中调用SetHook,但是鼠标键盘依然没有被屏蔽,请问是什么原因?
这个就是dll呀,在exe中调用了SetHook

g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("Hook.dll"),NULL);
从逻辑上看没有什么问题,你的EXE运行目录和DLL在一起么?会不会
GetModuleHandle("Hook.dll") 返回的是空呢?
导致SetWindowsHookEx也错呢?
能否判断下,看问题出在这么?
实在不行我以前写过一个钩子,有空可以来要。

全局钩子要写dll的呀