以下是程序DLL的程序全文, 钩子创建成功, 但是回调函数始终没有被调用。
(共享数据应该是对的, 我测试了开2个程序的时候其值有相应的变化关系)#include "stdafx.h"
#pragma data_seg("shareddata") 
HHOOK g_hLogHook=NULL;
HINSTANCE g_hInst = NULL;
#pragma data_seg() BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
 )
{
g_hInst = (HINSTANCE)hModule;
    return TRUE;
}extern "C" __declspec(dllexport)
LRESULT CALLBACK   KeyHookProc(int iCode,WPARAM wParam,LPARAM lParam)
{
::MessageBox(0, "", "", 0);
return CallNextHookEx((HHOOK)g_hLogHook,iCode,wParam,lParam); 
} extern "C" __declspec(dllexport)
void KeyProcInstall()
{
char szFileName[256];
GetModuleFileName(g_hInst, szFileName, 256);
if(g_hLogHook==NULL)
g_hLogHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyHookProc,g_hInst,0);
} extern "C" __declspec(dllexport)
void KeyProcUnInstall()
{
if(g_hLogHook!=NULL)
{
UnhookWindowsHookEx(g_hLogHook);
g_hLogHook=NULL;
}