Pressing Alt+ will Tabalso disable the application. Ctrl+ Esc- an alternative shortcut to open the Start menu. Alt+ EscSwitch between running applications. There are a number of different key sequences that can do this; a natural consequence of the fact that Windows is a multi-tasking operating system.
, , . , . , , , . (Paul DiLascia) , , MSDN. , , , :
TaskKeyHook.h:
#define DLLIMPORT __declspec(dllimport)
DLLIMPORT BOOL DisableTaskKeys(BOOL bEnable, BOOL bBeep);
DLLIMPORT BOOL AreTaskKeysDisabled();
TaskKeyHook.cpp
#define _WIN32_WINNT 0x0500
#include <afxwin.h> // MFC core and standard components
#define DLLEXPORT __declspec(dllexport)
class CTaskKeyHookDll : public CWinApp {
public:
CTaskKeyHookDll() { }
~CTaskKeyHookDll() { }
} MyDll;
#pragma data_seg (".mydata")
HHOOK g_hHookKbdLL = NULL;
BOOL g_bBeep = FALSE;
#pragma data_seg ()
#pragma comment(linker, "/SECTION:.mydata,RWS")
LRESULT CALLBACK MyTaskKeyHookLL(int nCode, WPARAM wp, LPARAM lp)
{
KBDLLHOOKSTRUCT *pkh = (KBDLLHOOKSTRUCT *) lp;
if (nCode==HC_ACTION) {
BOOL bCtrlKeyDown =
GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);
if ((pkh->vkCode==VK_ESCAPE && bCtrlKeyDown) ||
(pkh->vkCode==VK_TAB && pkh->flags & LLKHF_ALTDOWN) ||
(pkh->vkCode==VK_ESCAPE && pkh->flags & LLKHF_ALTDOWN)||
(pkh->vkCode==VK_LWIN || pkh->vkCode==VK_RWIN)) {
if (g_bBeep && (wp==WM_SYSKEYDOWN||wp==WM_KEYDOWN))
MessageBeep(0);
return 1;
}
}
return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
}
DLLEXPORT BOOL AreTaskKeysDisabled()
{
return g_hHookKbdLL != NULL;
}
DLLEXPORT BOOL DisableTaskKeys(BOOL bDisable, BOOL bBeep)
{
if (bDisable) {
if (!g_hHookKbdLL) {
g_hHookKbdLL = SetWindowsHookEx(WH_KEYBOARD_LL,
MyTaskKeyHookLL, MyDll.m_hInstance, 0);
}
} else if (g_hHookKbdLL != NULL) {
UnhookWindowsHookEx(g_hHookKbdLL);
g_hHookKbdLL = NULL;
}
g_bBeep = bBeep;
return AreTaskKeysDisabled();
}
( Windows "") , .
Ctrl + Alt + Del ( SAS), . , , SAS, , , . . , , , , , Windows XP. , , - , , .. - .