15,979
社区成员
发帖
与我相关
我的任务
分享
if ( (Key_Info->vkCode == VK_LWIN || Key_Info->vkCode == VK_RWIN) )
{
return TRUE;
}
LRESULT CALLBACK KeyboardProc( int nCode, WPARAM wParam, LPARAM lParam )
{
KBDLLHOOKSTRUCT *Key_Info = (KBDLLHOOKSTRUCT*)lParam;
if (HC_ACTION == nCode)
{
OutputDebugStringA("Ok hook code xxxxxxxxxxxxxxxxx");
if (WM_KEYDOWN == wParam || WM_SYSKEYDOWN == wParam)
{
OutputDebugStringA("Detect key down!!!!!!!!!!!!!!!!!");
if (Key_Info->vkCode == VK_LWIN || Key_Info->vkCode == VK_RWIN)
{
if( !g_isWinkeyPressed )
{
isOnlyWinkeyPressed = TRUE;
SetKeyState( Key_Info->vkCode, 1 );
g_isWinkeyPressed = TRUE;
}
}
else
{
isOnlyWinkeyPressed = FALSE;
if (Key_Info->vkCode == L'R' )
{
if( IsWinkeyPressed() && !IsKeyPressed(L'R') )
{
SetKeyState( Key_Info->vkCode, 1 );
::PostMessage( g_hwndThis, MSG_WIN_SHORTCUT, L'R', 0 );
return TRUE;
}
}
else if (Key_Info->vkCode == L'E' )
{
if( IsWinkeyPressed() && !IsKeyPressed(L'E') )
{
SetKeyState( Key_Info->vkCode, 1 );
::PostMessage( g_hwndThis, MSG_WIN_SHORTCUT, L'E', 0 );
return TRUE;
}
}
}
if ( (Key_Info->vkCode == VK_LWIN || Key_Info->vkCode == VK_RWIN) )
{
return TRUE;
}
}
// Win key short cut
if (WM_KEYUP == wParam || WM_SYSKEYUP == wParam)
{
SetKeyState( Key_Info->vkCode, 0 );
if ( (Key_Info->vkCode == VK_LWIN || Key_Info->vkCode == VK_RWIN) )
{
g_isWinkeyPressed = FALSE;
if( isOnlyWinkeyPressed )
{
::PostMessage( g_hwndThis, MSG_BN_LBUTTONDOWN, TRUE, 0 );
}
}
else if (Key_Info->vkCode == VK_OEM_3 && IsCtrlPressed() )
{
::PostMessage( g_hwndThis, MSG_SWITCH_KEYUP, TRUE, 0 );
if (Key_Info->dwExtraInfo == 0)
{
::PostMessage( g_hwndThis, MSG_KEYBOARDPRESS, 0, 0);
}
}
else if (Key_Info->vkCode == VK_DELETE && !IsCtrlPressed() && !IsAtlPressed())
{
if (theApp.m_pMainDlg->m_hWnd == GetActiveWindow())
{
::PostMessage( g_hwndThis, MSG_DELETE_FILE, TRUE, 0 );
}
if (Key_Info->dwExtraInfo == 0)
{
::PostMessage( g_hwndThis, MSG_KEYBOARDPRESS, 0, 0);
}
}
else if (Key_Info->vkCode == L'L' && IsWinkeyPressed() )
{
VKLockScreen();
if (Key_Info->dwExtraInfo == 0)
{
::PostMessage( g_hwndThis, MSG_KEYBOARDPRESS, 0, 0);
}
}
else
{
if (Key_Info->dwExtraInfo == 0)
{
::PostMessage( g_hwndThis, MSG_KEYBOARDPRESS, 0, 0);
}
}
if ( (Key_Info->vkCode == VK_LWIN || Key_Info->vkCode == VK_RWIN) )
{
return TRUE;
}
}
}
return(CallNextHookEx(g_hHookKeyboard, nCode, wParam, lParam));
}