修改按键回调钩子函数,经过一天的查资料,终于解决了按键按下和按键弹起时响应两次的问题。
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
if (nCode == HC_ACTION)
{
if (pStruct->vkCode == *g_lpdwVirtualKey)
{
switch(wParam)
{
case WM_KEYDOWN:
keybd_event('B',0,0,0);
keybd_event('B',0,KEYEVENTF_KEYUP,0);
return TRUE;
case WM_KEYUP:
return TRUE;
case WM_SYSKEYDOWN:
return TRUE;
case WM_SYSKEYUP:
return TRUE;
}
}
}
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}