dll文件本来是正常的键盘钩子, 是可以正常调用, 运行的 .
HMODULE WINAPI ModuleFromAddress(PVOID pv) 
{
MEMORY_BASIC_INFORMATION mbi;
if(::VirtualQuery(pv, &mbi, sizeof(mbi)) != 0)
{
return (HMODULE)mbi.AllocationBase;
}
else
{
return NULL;
}
}
LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
        if(nCode < 0 || nCode == HC_NOREMOVE)
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);        if(lParam & 0x40000000)
{
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
        ::PostMessage(g_hWndCaller, HM_KEY, wParam, lParam);
        return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
BOOL WINAPI SetKeyHook(BOOL bInstall, DWORD dwThreadId, HWND hWndCaller)
{
BOOL bOk;
g_hWndCaller = hWndCaller;

if(bInstall)
{
g_hHook = ::SetWindowsHookEx(WH_KEYBOARD, KeyHookProc, 
ModuleFromAddress(KeyHookProc), dwThreadId);
bOk = (g_hHook != NULL);

else 
{
bOk = ::UnhookWindowsHookEx(g_hHook);
g_hHook = NULL;
}
return bOk;
}我吧::SetWindowsHookEx(WH_KEYBOARD, KeyHookProc,ModuleFromAddress(KeyHookProc), dwThreadId)
的第一个参数改成WH_KEYBOARD_LL , 想做个 低级钩子. 编译没问题.正常生成DLL.但是用MFC写程序调用钩子lib的时候, 问题出现了. 不管按什么按键, 只能获取一个E的键值.
请高手帮忙看下 ?