The simplest way to achieve this is to use the RegisterHotKey function.
By calling this function from within your process you take precedence
over the O/S. The WM_HOTKEY message that is generated by the specified
key combination will be re-directed to the your processes message
queue. To block the hotkey, dont process the WM_HOTKEY message that is
sent to your queue. Below I have copied a constructor and destructor
that demonstrate this action.
CMainFrame::CMainFrame()
{
m_nHotKeyID = 100;
BOOL m_isKeyRegistered = RegisterHotKey(GetSafeHwnd(), m_nHotKeyID,
MOD_ALT, VK_TAB);
ASSERT(m_isKeyRegistered != FALSE);
}
CMainFrame::~CMainFrame()
{
BOOL m_iskeyUnregistered = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID);
ASSERT(m_isKeyUnregistered != FALSE);
}
There you have it, the simplest way to block the ALT-TAB without writing a VxD.
One last thing, the hotkey block will continue as long as your
application is running. When your process terminates the hotkey will
return to its original functionality.