#include <windows.h>


HHOOK g_hKeyBoard;


//底层键盘系统调用,过滤alt + tab

LRESULT CALLBACK KeyBoardProc(int code, WPARAM wParam, LPARAM lParam)

{

if (code == HC_ACTION)

{

PKBDLLHOOKSTRUCT p;


switch (wParam)

{

case WM_KEYDOWN:

case WM_SYSKEYDOWN:

case WM_KEYUP:

case WM_SYSKEYUP:

p = (PKBDLLHOOKSTRUCT)lParam;


if ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0) ) 

{

return 1;

}


break;

}


}


return ::CallNextHookEx(g_hKeyBoard, code, wParam, lParam);

}

//注册全局hook

void SetHook()

{

g_hKeyBoard = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardProc, GetModuleHandle(L"Hook"), 0);


}


//注销全局hook

void UnSetHook()

{

if (g_hKeyBoard)

UnhookWindowsHookEx(g_hKeyBoard);

g_hKeyBoard = NULL;

}