Main:void CKeyChangeDlg::InitHook()
{
hMod = LoadLibrary("LockScr.dll");
if (hMod == NULL)
{
return ;
} HOOKPROC hKeyboardProc = NULL; keyboard hook procedure
typedef void (*SETKEY) (HHOOK hHook);
SETKEY SetKeyboardHook; typedef void (*INITDLL) ();
INITDLL InitDll; hKeyboardProc = (HOOKPROC) GetProcAddress(hMod, "KeyboardProc");
SetKeyboardHook =(SETKEY)GetProcAddresshMod, "SetKeyboardHook");
InitDll = (INITDLL) GetProcAddress(hMod, "InitDll"); if (hKeyboardProc != NULL)
{
InitDll();
hHook = SetWindowsHookEx(WH_KEYBOARD, hKeyboardProc, hMod, 0);
SetKeyboardHook(hHook);
}

}
dll:LRESULT LOCKSCR_API CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >=0 
{
if (0 != nKey[wParam])
{
wParam=(unsigned int)nKey[wParam];
}
}
return nCode < 0 ? CallNextHookEx(hKeyHook,nCode,wParam, lParam) : -1;
}//???wParam=(unsigned int)nKey[wParam];   能改,但输入CHAR不变。