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.
// Call the RegisterHotKey function when the application
// is instantiated to block the ALT-TAB combination
// Note: The m_nHotKeyID is a int which specifies the hotkey
// ID, the hotkey id is programmer defined
CMainFrame::CMainFrame()
{
m_nHotKeyID = 100;BOOL m_isKeyRegistered = RegisterHotKey(GetSafeHwnd(), m_nHotKeyID,
MOD_ALT, VK_TAB);ASSERT(m_isKeyRegistered != FALSE);
}//lets remove the hotkey block when the application is destroyed
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.