Доброго времени суток.
Как поймать нажатие 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;