LRESULT CALLBACK lowlevelkeyboardporc (int ncode,wparam wparam,lparam LPARAM)//Real implementation method of shielding keys
{
BOOL featkeystrole = FALSE;
if (NCode = = hc_action)
{
Switch (WParam)
{
Case WM_KEYDOWN:
Case WM_SYSKEYDOWN:
Case WM_KEYUP:
Case WM_SYSKEYUP:
{
Pkbdllhookstruct p = (pkbdllhookstruct) LParam;
if (P->vkcode = = Vk_lwin | | p->vkcode = = vk_rwin)//
{
Featkeystrole = TRUE;
}
Tab + Alt
/* ((P->vkcode = = Vk_tab) && ((P->flags & llkhf_altdown)! = 0))
ESC + Alt
|| ((P->vkcode = = Vk_escape) && ((P->flags & llkhf_altdown)! = 0))
ESC + Ctrl
|| ((P->vkcode = = Vk_escape) && ((Getkeystate (Vk_control) & 0x8000)! = 0))
Ctrl + Space
|| (((Getkeystate (Vk_control) & 0x8000)! = 0) && (p->vkcode = = Vk_space));
*/
}
Break
}
}
Return (Featkeystrole?1:callnexthookex (Null,ncode,wparam,lparam));
}
BOOL Cxxxdlg::installhook (void)
{
HInstance Hins=afxgetinstancehandle ();
Hook = SetWindowsHookEx (Wh_keyboard_ll, (HOOKPROC) lowlevelkeyboardporc,hins,0);
Return (BOOL) Hook;
}
BOOL Cxxxdlg::oninitdialog ()
{
The previous code system defaults,
SetWindowPos (&wndtopmost,0,0,0,0,swp_nomove| swp_nosize);//front-end display after full screen
HWND hwnd =:: FindWindow (_t ("Shell_traywnd"), NULL);//Cancel taskbar, Start menu
HWND Hbutton =::findwindow (NULL, _t ("Start"));//Cancel Start menu, not successful under XP
if (hwnd&& Hbutton)
{
static BOOL bShow = FALSE;
:: ShowWindow (HWnd, sw_hide);
:: ShowWindow (Hbutton,sw_hide);
}
Installhook ();//Load Hook
return TRUE;
}
Unloading
UnhookWindowsHookEx (G_HHKLOWLEVEL,KYBD);//This parameter is not correct
http://blog.csdn.net/eplanet/article/details/1789941
MFC masking Windows keys