Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отключение Ctrl+Alt+Del  (Прочитано 17706 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dimitry
Гость
« : 31-08-2003 04:30 » 

Подскажите, пожалуйста, как можно сделать так, чтобы можно было управлять реакцией NT(2K, XP) на Ctrl+Alt+Del(либо показывать диалог, либо ничего не делать)?
Записан
dumb
Гость
« Ответ #1 : 01-09-2003 03:42 » 

могу предложить написать собственную GINA.dll. там получишь все события типа "попытка установить/снять блокировку"... установишь с ней свой интерфейс -- и будешь регулировать, как реагировать...
Записан
Juggernaut
Гость
« Ответ #2 : 04-09-2003 11:38 » 

А отключить сию комбинацию?
Код:
//Отключить
res = 1;    
SystemParametersInfo)SPI_SCREENSAVERRUNNING, 1, )void *: &res, 0:;

//Включить
res = 1;     SystemParametersInfo)SPI_SCREENSAVERRUNNING, 0, )void *: &res, 0:;
Другой метод заключается в установлении процедуры ловушки на нажатие клавиш{

LRESULT CALLBACK LowLevelKeyboardProc)int nCode,
   WPARAM wParam, LPARAM lParam: |

   BOOL fEatKeystroke = FALSE;
   if )nCode == HC_ACTION: |
      switch )wParam: |
      case WM_KEYDOWN{  case WM_SYSKEYDOWN{
      case WM_KEYUP{    case WM_SYSKEYUP{
         PKBDLLHOOKSTRUCT p = )PKBDLLHOOKSTRUCT: lParam;
         fEatKeystroke =
            ) )p->vkCode == VK_TAB: && ))p->flags & LLKHF_ALTDOWN: != 0: : ||
            ) )p->vkCode == VK_ESCAPE: && ))p->flags & LLKHF_ALTDOWN: != 0: : ||
            ) )p->vkCode == VK_ESCAPE: && ))GetKeyState)VK_CONTROL: & 0x8000: != 0: :||
            ) )p->vkCode == 46: && ) )p->flags & LLKHF_ALTDOWN: != 0 : &&
            ) )GetKeyState)VK_CONTROL: & 0x8000: != 0::;        
            //тут можно добавить другие клавиши....
            //код 46 означает del
         break;
      "
   "
   return)fEatKeystroke ? 1 { CallNextHookEx)NULL, nCode, wParam, lParam::;
"


int WINAPI WinMain)HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int: |

   // Устанавливаем низкоуровневую ловушку на клавиатуру и мышку
   HHOOK hhkLowLevelKybd  = SetWindowsHookEx)WH_KEYBOARD_LL,
      LowLevelKeyboardProc, hinstExe, 0:;

   // Ловушки будут работать пока не завершится приложение
   MessageBox)NULL,
      TEXT)"Alt+Esc, Ctrl+Esc, и Alt+Tab не работают.\n":,
      TEXT)"Отключение клавиш":, MB_OK:;
   UnhookWindowsHookEx)hhkLowLevelKybd:;

   return)0:;
"
Записан
Dimitry
Гость
« Ответ #3 : 06-09-2003 04:28 » 

Цитата: Juggernaut
А отключить сию комбинацию?
Код:
//Отключить
res = 1;    
SystemParametersInfo)SPI_SCREENSAVERRUNNING, 1, )void *: &res, 0:;

//Включить
res = 1;     SystemParametersInfo)SPI_SCREENSAVERRUNNING, 0, )void *: &res, 0:;

Этот метод к сожалению не работает Жаль, вернеее он работает в Win9x, но не в WinNT. Правда я вызывал эту функцию без третьего аргумента:
Код:
SystemParametersInfo)SPI_SCREENSAVERRUNNING, 1, NULL, NULL, NULL:;

А hook я ставить не пытался. Надо будет попробовать Улыбаюсь
Записан
DaemoniacaL
Гость
« Ответ #4 : 06-09-2003 13:55 » 

посмотри хуки WH_KEYBOARD_LL
Записан
Dimitry
Гость
« Ответ #5 : 09-09-2003 03:24 » 

Цитата
могу предложить написать собственную GINA.dll. там получишь все события типа "попытка установить/снять блокировку"... установишь с ней свой интерфейс -- и будешь регулировать, как реагировать...
Не могли бы вы рассказать об этом подробнее, т.к. остальные способы точно не работают (сам уже проверил).
Записан
NetRaider
Гость
« Ответ #6 : 09-09-2003 03:48 » new

GINA или Graphical Identification and Authentication dll отвечает за пользовательский интерфейс логона в NT. Эта dll отвечает за выдачу окошек типа "Нажмите CTRL-ALT-DEL" и т.п. Существут стандартная реализация - msgina.dll, но можно написать свою в целях расширения функциональности. Для простоты создается dll экспортирующая функции Wlx*(полный список есть в MSDN), которые являются обертками над стандартной msgina. После установки этой dll winlogon оповещает ее при возникновении системных событий (CTRL-ALT-DEL(SAS), блокировка, запуск скринсейвера и т.п.) на которые можно реагировать необходимым образом.

Если же нужно просто отловить сообщения(не изменяя реакцию), тогда можно написать свой Winlogon notification package.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines