Disabling the Alt-Tab key combination

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.