#include "stdafx.h"
#include "Hookexe.h"#define MAX_LOADSTRING 100KeyInfo KI;
DWORD dk[]={VK_NUMPAD4,VK_NUMPAD3,VK_NUMPAD5,65}; 
int nlength=sizeof(dk)/sizeof(DWORD);
HHOOK hk=NULL;
DWORD ThreadID;void sendKey()
{
keybd_event(66,0,0, 0 );
}
DWORD WINAPI ThreadProc (LPVOID pParam)
{
    sendKey(); 
//PostMessage(GetActiveWindow(),WM_KEYDOWN,66,0);
return false;
}BOOL CALLBACK KeyboardProc(WPARAM action, KBDLLHOOKSTRUCT* pKeyStruct)
{
KI.pKeyStruct=pKeyStruct;
switch (pKeyStruct->vkCode)
{
case 65:
CreateThread(NULL,0,ThreadProc,NULL,0,&ThreadID);
break;
case VK_NUMPAD3:
break;
case VK_NUMPAD5:
break;
}
return false;
}LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode==HC_ACTION) 
{
KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam; //将lParam强制转换成KBDLLHOOKSTRUCT
for(int i=0;i<nlength;i++)
{
if(pStruct->vkCode==dk[i])
{
KeyboardProc(wParam,pStruct);
return CallNextHookEx(hk, nCode, wParam, lParam); ;
}
}
}
return  CallNextHookEx(hk, nCode, wParam, lParam);
}我把这语句单独放到另外程序中,是正常的,但是在线程中就会按下两次,经过调试,线程也只执行了一次,令我费解..