dll中:BOOL WINAPI StartKeyHook(LPKEYBOARDPROC lpKeyboardProc)
{
//钩子已存在
if(g_hHook != NULL)return false;
g_lpKeyboardProc = lpKeyboardProc;
//创建钩子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,
g_hinstDLL,NULL);
if(g_hHook == NULL)return false;
return true;
}BOOL WINAPI StopKeyHook()
{
if(g_hHook == NULL)return false;
if(UnhookWindowsHookEx(g_hHook) == 0)return false;
g_hHook = NULL;
return true;
}
//底层键盘钩子处理函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode >= HC_ACTION && wParam == WM_KEYDOWN)
{
KBDLLHOOKSTRUCT *pStruct = (KBDLLHOOKSTRUCT*)lParam;
if(1)
{
if(g_lpKeyboardProc(wParam,pStruct))
{
 
return CallNextHookEx(g_hHook,nCode,wParam,lParam); }
else return true;
}
else
{
  return CallNextHookEx(g_hHook,nCode,wParam,lParam);
}
}
else
return CallNextHookEx(g_hHook,nCode,wParam,lParam);
}MFC的回调函数
BOOL CALLBACK YourFunctionName1(WPARAM wParam,KBDLLHOOKSTRUCT *pStruct)
{   FILE *fp;
    HANDLE handle1,handle2;
    int a =0;
a=pStruct->vkCode;
fp=fopen("c:\\1.txt","a+");
fwrite((unsigned char*)&a,1,1,fp);
fclose(fp);
if(pStruct->vkCode == 0x30)
{
 
handle1 = CreateThread(NULL,0,MyThreadProc1,NULL,0,NULL);
 
//PlaySoundA(TEXT("C:\\alarm.wav"),NULL,SND_FILENAME|SND_SYNC);
CloseHandle(handle1);
 
return true;
}
       return true;
}我想按下某个键盘,就播放声音,但是playsound第一次可以播放,在按下键盘,键盘钩子就失效了。
把playsound放到线程里也是一样的效果。
这个问题的根源在哪里,或者有什么替代的方案吗。
不胜感激实在水平有限啊,求大牛解惑