Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подменить комбинации клавиш 
:(
    Опции темы
casio23
Дата 27.5.2012, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.5.2012

Репутация: нет
Всего: нет



(это не банер!!!) Проблема следующая нужно перехвачивать сл.комбинации клавиш - ALT+F4,ALT+TAB,CTRL+ALT+TAB,ALT+TAB(ALT c лева и справа),ALT+CTRL+Delete,CTRL+SHIFT+ESC. Пробывал делать подмену через реестр но антивирус ругается. Сделал следующим образом:

эти комбинации ловит (ALT+F4, ALT+TAB(ALT c лева и справа), CTRL+SHIFT+ESC), а вот эти почему то нет(CTRL+ALT+TAB, ALT+CTRL+Delete) не получается прописать, подскажите как решить эту задачу, еще раз повторюсь это не банер!

собственно код:
Код

    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.

casio (Online) 


Это сообщение отредактировал(а) casio23 - 27.5.2012, 17:03
PM MAIL   Вверх
casio23
Дата 27.5.2012, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.5.2012

Репутация: нет
Всего: нет



нашел хук,к стате даже очень хорош в своем роде, но в нем всеравно срабатывает диспетчер ((

http://www.cyberforum.ru/win-api/thread117073.html
PM MAIL   Вверх
kami
Дата 27.5.2012, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(casio23 @  27.5.2012,  17:02 Найти цитируемый пост)
ALT+CTRL+Delete

это не перехватить.
PM MAIL WWW   Вверх
drkot
Дата 31.5.2012, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата

еще раз повторюсь это не банер!

что за банер?  smile 

Цитата

подскажите как решить эту задачу


очень просто... пишется драйвер-фильтр и навешивается либо непосредственно на драйвер клавиатуры, либо чуть выше


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
casio23
Дата 8.6.2012, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 22.5.2012

Репутация: нет
Всего: нет



drkot,  не могли бы по подробней?  драйвер-фильтр...
PM MAIL   Вверх
northener
Дата 9.6.2012, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(casio23 @  8.6.2012,  22:47 Найти цитируемый пост)
drkot,  не могли бы по подробней?  драйвер-фильтр... 

Подробнее читайте у Руссиновича.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.