Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2012, 22:29   #1
casio23
Форумчанин
 
Аватар для casio23
 
Регистрация: 29.12.2010
Сообщений: 186
Плохо Перехватить комбинации клавиатуры....

Здрастье, подскажите,как решить следующие: данный код перехватывает нажатия таких комбинаций (Alt+Esc, Ctrl+Esc, WIN, Alt+F4, Alt+Tab ) но при нажатии на Alt+Ctrl+Tab комбинация срабатывает! как не дать сработать?и как перехватить Alt+Ctrl+Del?

Код:
    program DisableLowLevelKeys;
     
    uses
     Windows, Messages;
     
    const
     LLKHF_ALTDOWN  = KF_ALTDOWN shr 8;
     WH_KEYBOARD_LL = 13;
     
    type
     
     TKBDLLHOOKSTRUCT = record
       vkCode: DWORD;
       scanCode: DWORD;
       flags: DWORD;
       time: DWORD;
       dwExtraInfo: DWORD;
     end;
     PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
     
    var
     hhkLowLevelKybd: HHOOK;
     
    //------------------------------------------------------------------------------
     
    function LowLevelKeyboardProc(nCode: integer;  wParam: WPARAM;  lParam: LPARAM): LRESULT; stdcall;
    var
     fEatKeystroke: boolean;
     p: PKBDLLHOOKSTRUCT;
    begin
     fEatKeystroke := false;
     if nCode = HC_ACTION then
       begin
         case wParam of
           WM_KEYDOWN,
           WM_SYSKEYDOWN,
           WM_KEYUP,
           WM_SYSKEYUP:
             begin
               p := PKBDLLHOOKSTRUCT(lParam);
               fEatKeystroke := ((p^.vkCode = VK_LWIN) or (p^.vkCode = VK_RWIN)) or
                                ((p^.vkCode = VK_TAB) and ((p^.flags and LLKHF_ALTDOWN) <> 0)) or
                                ((p^.vkCode = VK_ESCAPE) and ((p^.flags and LLKHF_ALTDOWN) <> 0)) or
                                ((p^.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) <> 0)) or
                                ((p^.vkCode = VK_F4) and ((p^.flags and LLKHF_ALTDOWN) <> 0));
             end;
         end;
       end;
     if fEatKeystroke then
       result := 1
     else
       result :=  CallNextHookEx(0, nCode, wParam, lParam);
    end;
     
    //------------------------------------------------------------------------------
     
    begin
     // Install the low-level keyboard & mouse hooks
     hhkLowLevelKybd := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
     
     // Keep this app running until we're told to stop
     MessageBox(0,
                PChar('Alt+Esc, Ctrl+Esc, WIN, Alt+F4, and Alt+Tab are now disabled.' + #13#10 +
                      'Click "Ok" to terminate this application and re-enable these keys.'),
                PChar('Disable Low-Level Keys'),
                MB_OK);
     
     // Remove hooks
     UnhookWindowsHookEx(hhkLowLevelKybd);
    end.
casio23 вне форума Ответить с цитированием
Старый 28.04.2012, 23:58   #2
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Ой ой делал я такое, там не комбинацию клавиш надо перехватывать, там надо вроде событие это перехватывать, извини не могу точнее сказать проекта не осталось...
Dozent вне форума Ответить с цитированием
Старый 29.04.2012, 00:05   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

собитие только в твоем приложени. Человеку вообще перехват этого везде нужен.
Пишите простой клавиотурный драйвер. Да и зачем геморой? На время блокировка, меняйте расширение у диспетчера зражачь, либо перемещайте его куда-нибудь.
Человек_Борща вне форума Ответить с цитированием
Старый 01.05.2012, 01:02   #4
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
По умолчанию

hotkey кажется есть такая функция в winapi - RegisterHotKey

Последний раз редактировалось stdio; 01.05.2012 в 01:04.
stdio вне форума Ответить с цитированием
Старый 11.05.2012, 10:58   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Цитата:
как перехватить Alt+Ctrl+Del?
Хуками никак. Писать Gina.dll.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможные комбинации firephenix Помощь студентам 1 01.04.2011 02:19
Комбинации клавиш Alessandro Rossi Свободное общение 8 28.11.2010 23:30
принадлежит ли число, введённое с клавиатуры отрезку (а;в). Границы отрезка вводятся с клавиатуры Maria, Russia Помощь студентам 3 17.02.2009 22:01
Найти комбинации zzzzz Помощь студентам 3 29.09.2008 19:44
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе rpy3uH Win Api 2 02.12.2006 12:12