@Creat1ve

Как поймать нажатие CTRL+ALT+DEL (SetWindowsHookEx)?

Доброго времени суток.
Как поймать нажатие CTRL+ALT+DEL?
Делаю так:
SetWindowsHookEx(WH_KEYBOARD_LL, ... ... ... )
...
int callHookProc(int nCode, DWORD wParam, DWORD lParam)
{
    switch (wParam) {
        case WM_KEYDOWN: 
        ...
    }
}

Любые сочетания работают кроме вышеназванного. Синтаксических и логических ошибок нет, гугл подсказал, что заблокировано мелкософтом. Есть какие-нибудь варианты?
(И нет, вирусы не пишу. Хочу научить WinPE открывать диспетчер задач по сочетанию клавиш CTRL+ALT+DEL)

UPD: Решено. Как? А хрен его знает. Пока возился с кодом и путался в DLL-ках от балды заново написал всё те же строки "на всякий случай" и заработало. Что в основной, что в PE. То-есть, это не баг. Видимо, всё-таки, где-то ошибся в тот раз.

switch (wParam) {
        case WM_KEYDOWN: {
            KBDLLHOOKSTRUCT kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
            if (kbdStruct.vkCode == VK_DELETE)
            {
                boolean b = bool( uchar(GetKeyState(VK_MENU)) >> 7 );
                b = b && ( bool( uchar(GetKeyState(VK_LCONTROL)) >> 7 )
                           || bool( uchar(GetKeyState(VK_RCONTROL)) >> 7 ) );
                if (b) { QWinHook::m_This->call_taskmgr(); }
            }
            break;
  • Вопрос задан
  • 172 просмотра
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как поймать нажатие CTRL+ALT+DEL?

В винде обычными средствами -- никак. Потому что это secure attention sequence. Его обрабатывает winlogon или загруженная в него GINA. Читать начиная отсюда.

Есть какие-нибудь варианты?

Написать и установить свою GINA.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы