Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отключить управлячющие комбинации клавиш 
:(
    Опции темы
szz
Дата 1.2.2007, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Да, знаю, подобные вопросы задавались не раз, но все они разрозненные. Тут я хочу все свести воедино.
Итак, задача:
Отключить управляющие клавиши на клавиатуре, а именно:
ctrl, alt, del, esc, windows
И не важно какая программа в фокусе - кнопки должны быть отключены.

Это нужно для киоск-программ (когда на полный экран какой-то интерфейс).

Отключено должно быть на самом нижайшем уровне, чтобы сигналы от ник в виндоус не поступали.
Просто отклюбчить таск менеджер не пойдет, ибо при ctrl-alt-del выскакивает алерт "Запрещено администраротом". Это недопустимо.

Каким образом это сделать?


--------------------
PM   Вверх
_hunter
Дата 1.2.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Цитата(szz @  1.2.2007,  04:07 Найти цитируемый пост)
Да, знаю, подобные вопросы задавались не раз

вот именно.
Цитата(szz @  1.2.2007,  04:07 Найти цитируемый пост)
но все они разрозненные

но вполне завершенные.
Цитата(szz @  1.2.2007,  04:07 Найти цитируемый пост)
Тут я хочу все свести воедино.

не нужно этого делать -- к куче уже имеющихся тем (из которых только твоих штуки три одинаковых) прибавится еще одна...
Цитата(szz @  1.2.2007,  04:07 Найти цитируемый пост)
Итак, задача:Отключить управляющие клавиши на клавиатуре, а именно:

пользуемся поиском:
http://forum.vingrad.ru/index.php?showtopi...st&p=723721
http://forum.vingrad.ru/topic-40533.html
http://forum.vingrad.ru/topic-41584.html
http://forum.vingrad.ru/topic-73002.html


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
_pussbb
Дата 1.2.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



лучше вего как для для меня это поставить хуки(перехват) на клаву.  дам пример со своей программы чтобы долго не лазил ппо  всяким ссылкам
DLL project
Код

#pragma data_seg (".mydata")
HHOOK g_hHookKbdLL = NULL;
BOOL  g_bBeep = FALSE;        // beep on illegal key
#pragma data_seg ()
extern "C" int  __export  MyTaskKeyHookLL(int nCode, WPARAM wp, LPARAM lp)
{
    KBDLLHOOKSTRUCT *pkh = (KBDLLHOOKSTRUCT *) lp;

    if (nCode==HC_ACTION) {
        BOOL bCtrlKeyDown =
            GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);

        if ((pkh->vkCode==VK_ESCAPE && bCtrlKeyDown) ||                    // Ctrl+Esc
            // (pkh->vkCode==VK_TAB && pkh->flags & LLKHF_ALTDOWN) ||   // Alt+TAB
             (pkh->vkCode==VK_ESCAPE && pkh->flags & LLKHF_ALTDOWN)|| // Alt+Esc
             (pkh->vkCode==VK_LWIN || pkh->vkCode==VK_RWIN)) { // Start Menu
            if (g_bBeep && (wp==WM_SYSKEYDOWN||wp==WM_KEYDOWN))
                MessageBeep(0); // only beep on downstroke if requested
            return 1; // gobble it: go directly to jail, do not pass go
        }
    }
    return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
}

 а в проге пишу
Код

int(_stdcall *MyTaskKeyHookLL1)();
HINSTANCE dllp=LoadLibrary("hook_dll.dll");
if (dllp) {
    MyTaskKeyHookLL1=(int(__stdcall *) ())
    GetProcAddress(dllp,"_MyTaskKeyHookLL1");
    if (MyTaskKeyHookLL1)
      hHook = SetWindowsHookEx(WH_KEYBOARD_LL, // тип хука
                        MyTaskKeyHookLL1, // хук-функция
                        dllp, // хендл библиотеки с хук-функцией
                        NULL);

              } else { ShowMessage("Не удалось найти компонент");}

               FreeLibrary(dllp);

потом при закритии своего приложения не забудь сбросить все хуки командой 
Код

 UnhookWindowsHookEx(hHook);

если хочеш подробно узнать проо хуки [erb то зайди на http://worldcpp.vingrad.ru/appli

PM MAIL WWW   Вверх
szz
Дата 1.2.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Вот! Вот это я и называю - цельное решение! _pussbb, спасибо! Но насколько я понял, Ctrl+Alt+Del это все-тки не отклчает?


--------------------
PM   Вверх
_pussbb
Дата 2.2.2007, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я конечно не пробывал но скорее всего не отменяет но если тебе например  заблокировать клаву и мишь(особеность блокировки в том сто при нажатии Ctrl+Alt+Del блокировка снимаеться) тогда ставиш хук на нажатие любой клавиши и пишеш оброботку.
 Если у тебя получиться сделать скинь на мой e-mail.  а друг и мне пригодиться.
И мой тетбе совет если у  тебя до сих пор нет офлайн версии worldcpp то скачай немедленно. Та м очень много полезного

Это сообщение отредактировал(а) _pussbb - 2.2.2007, 01:40
PM MAIL WWW   Вверх
szz
Дата 2.2.2007, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



А вот еще вопросик вдогонку маленький.
  Как выключить правую кнопку мыши? smile



--------------------
PM   Вверх
_pussbb
Дата 2.2.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



если ты читал документацию о хуках то там написано что можна ставить ловвушки практически на все в том числе включая нажатия кнопок мишки и при нажатии правой кнопки срботает хук и при обработку действий на событие  оставиш пустым. И все при нажатии левой кнопки миши ничего не произойдет.  еще раз говорю возьми cppworld smile . http://worldcpp.vingrad.ru/b_sys/systb1.php для примера.

А да пока вспомнил  на счет    Ctrl+Alt+Del   если тебе надо скрыть диспечер задач то быстрее всего это  сделать при помощи добавления ключа в реестр.  Но есть одно но надо права администратора
Код

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableTaskMgr"=dword:00000001





Это сообщение отредактировал(а) _pussbb - 2.2.2007, 22:24
PM MAIL WWW   Вверх
szz
Дата 3.2.2007, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Не работает...
 Продебаггил, библиотека загружается, но после
Код

MyTaskKeyHookLL1=(int(__stdcall *) ())
    GetProcAddress(dllp,"_MyTaskKeyHookLL1");

MyTaskKeyHookLL1 остается NULL, поэтому не происходит выполнения внутри if(MyTaskKeyHookLL1)  smile 


--------------------
PM   Вверх
Romikgy
Дата 3.2.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(szz @  2.2.2007,  23:16 Найти цитируемый пост)
GetProcAddress(dllp,"_MyTaskKeyHookLL1");

а разве не так
Код

GetProcAddress(dllp,"MyTaskKeyHookLL1");



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
_pussbb
Дата 3.2.2007, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А ты посмотри внимательно я конечно извиняюсь но дал тебе в dll одну функцию _MyTaskKeyHookLL а вызываеш ты _MyTaskKeyHookLL1 поэтому  и значение ноль
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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