Как отключить переключение на платформах Win32 задач

Переводы статьи Переводы статьи
Код статьи: 226359 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье описывается, как отключить переключение между задачами и другими функциями системы через сочетания клавиш, например ALT + TAB для платформ Win32 и сочетание клавиш CTRL + ESC.

Windows 95 и Windows 98

Приложения можно включить и отключить сочетание клавиш ALT + TAB и CTRL + ESC, например, путем вызова SystemParametersInfo (SPI_SETSCREENSAVERRUNNING). Чтобы отключить сочетание клавиш ALT + TAB и CTRL + ESC, присвойте параметру uiParam значение TRUE; Чтобы включить сочетания клавиш, задайте для параметра значение FALSE:
UINT nPreviousState;

// Disables task switching
SystemParametersInfo (SPI_SETSCREENSAVERRUNNING, TRUE, &nPreviousState, 0);

// Enables task switching
SystemParametersInfo (SPI_SETSCREENSAVERRUNNING, FALSE, &nPreviousState, 0);
				
Примечание Приложения, использующие SystemParametersInfo (SPI_SETSCREENSAVERRUNNING), чтобы отключить переключение задач необходимо включить переключение перед выходом из задач или задач коммутации остается отключенным после завершения процесса.

Windows 2000 и Windows NT 4.0 Пакет обновления 3 или более поздней версии

Приложения можно отключить сочетание клавиш ALT + TAB или CTRL + ESC, установив обработчик низкого уровня клавиатуры. Обработчик клавиатуры нижнего уровня (WH_KEYBOARD_LL) устанавливается путем вызова SetWindowsHookEx. Дополнительные сведения об окне ловушки см «Ловушки» в документации Platform SDK.

Ниже приведен пример процедуры низкого уровня клавиатуры ловушка, которая отключает клавиши CTRL + ESC, ALT + TAB и ALT + ESC.
LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam)
{
    // By returning a non-zero value from the hook procedure, the
    // message does not get passed to the target window
    KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
    BOOL bControlKeyDown = 0;

    switch (nCode)
    {
        case HC_ACTION:
        {
            // Check to see if the CTRL key is pressed
            bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1);
            
            // Disable CTRL+ESC
            if (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown)
                return 1;

            // Disable ALT+TAB
            if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)
                return 1;

            // Disable ALT+ESC
            if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags & LLKHF_ALTDOWN)
                return 1;

            break;
        }

        default:
            break;
    }
    return CallNextHookEx (hHook, nCode, wParam, lParam);
}
				

Windows NT 4.0 Пакет обновления 2 и более ранних версий, Windows NT 3.51 или более ранней версии

Приложения можно отключить сочетание клавиш CTRL + ESC всей системы путем замены диспетчера задач Windows NT, но это не рекомендуется.

Приложения можно отключить сочетание клавиш ALT + TAB, ALT + ESC при запуске приложения путем регистрации сочетания клавиш ALT + TAB и комбинации ALT + ESC путем вызова RegisterHotKey.

Дополнительная информация

Старые средства разработки, такие как Microsoft Visual C++ версии 5.0 и более ранних версиях может не содержать файлы заголовков, необходимые для создания приложения, которое использует обработчики клавиатуры нижнего уровня. Чтобы получить самые последние файлы заголовков, загрузите последнюю версию пакета Platform SDK с веб-узла корпорации Майкрософт:
http://www.Microsoft.com/msdownload/platformsdk/sdkupdate/PSDK-Full.htm
Из-за низкого уровня клавиатуры обработчики функций, определенных в Пакет обновления 3 для Windows NT 4.0 и более поздних версий, определить _WIN32_WINNT настроек = 0x0400 до включая winuser.h (или windows.h).

Свойства

Код статьи: 226359 - Последний отзыв: 9 февраля 2014 г. - Revision: 6.0
Информация в данной статье относится к следующим продуктам.
Ключевые слова: 
kbhook kbhowto kbinput kbmt KB226359 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.
Эта статья на английском языке: 226359

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com