Конференция "WinAPI" » Блокировка клавиатуры + мыши под Win XP [D5, D6, WinXP]
 
  • Red_imp © (06.06.08 14:45) [0]
    Пишу програму для студентов, нужно чтоб в некоторые моменты времени, они не могли своими шаловливыми ручками никуда полезть.
    Есть проблема - как заблокировать нажатие любых клавиш на клавиатур (в том числе и Ctrl+Alt+Del), и работу мыши, под  Win XP. Мож кто пнет в правильном направлении.
  • Игорь Шевченко © (06.06.08 14:54) [1]
    А зачем для студентов блокировать клавиши и мышь ?
  • Anatoly Podgoretsky © (06.06.08 15:12) [2]
    > Red_imp  (06.06.2008 14:45:00)  [0]

    Только попробуй, поймают и изобьют, заодно мышку и клавиатуру разломают.
  • Eraser © (06.06.08 19:15) [3]
    > в том числе и Ctrl+Alt+Del

    для XP - написать GINA, для висты - драйвер, только потом не забыть подписать его у MS.
  • Denis__ © (08.06.08 11:29) [4]

    > > в том числе и Ctrl+Alt+Del
    >
    > для XP - написать GINA, для висты - драйвер, только потом
    > не забыть подписать его у MS.

    Всё намного проще...
  • Тын-Дын © (08.06.08 14:57) [5]

    > Denis__ ©   (08.06.08 11:29) [4]
    > > > в том числе и Ctrl+Alt+Del> > для XP - написать GINA,
    >  для висты - драйвер, только потом > не забыть подписать
    > его у MS.Всё намного проще...


    Ну так ответь, раз всё проще...
  • Denis__ © (09.06.08 10:48) [6]

    > Тын-Дын ©

    и попасть, как помощник писателя сам знаешь чего. Если б я тебя знал, знал бы для чег тебе это, сказал бы. Ищи сам, наверняка в тырнете есть.
  • Тын-Дын © (09.06.08 10:58) [7]

    > Denis__ ©   (09.06.08 10:48) [6]
    >
    > > Тын-Дын ©
    >
    > и попасть, как помощник писателя сам знаешь чего. Если б
    > я тебя знал, знал бы для чег тебе это, сказал бы. Ищи сам,
    >  наверняка в тырнете есть.


    Гнилая отмазка.
  • Тын-Дын © (09.06.08 11:18) [8]
    Тем более, что в вопросе нет никакого криминала.
  • Red_imp © (09.06.08 16:03) [9]

    > Игорь Шевченко ©   (06.06.08 14:54) [1]
    > А зачем для студентов блокировать клавиши и мышь ?

    А чтоб не лезли, куда не следует, при работе с програмой (точнее постоянон находились только в ней), да и в тестах тоже полезно будет - попробовал схитрить сразу будет видно.

    Eraser ©

    Спасибо, попробую, так как другого метода не нашел.


    > Denis__ ©   (09.06.08 10:48) [6]
    > > Тын-Дын © и попасть, как помощник писателя сам знаешь
    > чего. Если б я тебя знал, знал бы для чег тебе это, сказал
    > бы. Ищи сам, наверняка в тырнете есть.


    Не нашел, к сожалению. Ну ладно мож по другому както решу, данную проблему.
    Всем спасибо.
  • Игорь Шевченко © (09.06.08 16:58) [10]

    > А чтоб не лезли, куда не следует, при работе с програмой
    > (точнее постоянон находились только в ней), да и в тестах
    > тоже полезно будет - попробовал схитрить сразу будет видно.
    >


    Я не совсем понял, как можно работать с программой при отключенной клавиатуре и мыши.
  • Red_imp © (09.06.08 17:01) [11]

    > Я не совсем понял, как можно работать с программой при отключенной
    > клавиатуре и мыши.


    В момент когда запушен демонстрационный ролик ))
  • grate (15.06.08 17:00) [12]
    пинаю: SetWindowsHookEx

    для клавы использовать WH_KEYBOARD_LL, для мыши, соответственно, WH_MOUSE_LL.

    Сам Delphi не юзаю, на тему эту набрел вообще случайно, через гугл, поэтому код на С

    Простейший обработчик, блокирующий клаву в зависимости от состояния булевой глобальной переменной Blocked:


    LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
    {
    return(Blocked ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
    }




    Собственно, установка хука на клавиатуру (LL - лоу левел, это чтоб не писать отдельно длл-ку):


    typedef int (__stdcall * pFunc)();
    WINAPI WinMain(HINSTANCE hInstance,  HINSTANCE hPrevInstance,   LPSTR     lpCmdLine,  int       nCmdShow)
    {
    Hook = SetWindowsHookEx(WH_KEYBOARD_LL,(pFunc)LowLevelKeyboardProc,hInstance,0);
    }




    Ctrl+Alt+Del не блокирует.

    Я не интересовался специально блокировкой CAD, но можно вообще запретить вызов дисперчера задач - поправив реестр:

    ключ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
    запись DisableTaskMgr = 1
    Можно программно:


    void BlockCAD(bool Bl) {
    try {
     TRegistry *reg = new TRegistry;
     reg->RootKey = HKEY_CURRENT_USER;
     reg->OpenKey("Software", true);
     reg->OpenKey("Microsoft", true);
     reg->OpenKey("Windows", true);
     reg->OpenKey("CurrentVersion", true);
     reg->OpenKey("Policies", true);
     reg->OpenKey("System", true);
     if (Bl)
      reg->WriteString("DisableTaskMgr", '1');
     else
      reg->DeleteValue ("DisableTaskMgr");
     reg->CloseKey();
    }
    catch (...) {

    }

    }



    Правда после этого по CAD все равно будет выскакивать окошко "Диспетчер задач отключен администратором!". Как заставить ХР полностью игнорить CAD - не знаю.
  • Renegat (15.06.08 17:18) [13]
    Есть ещё такой способ тотального контроля (CAD тоже будет ловить), как отлов клавиатурного/мышиного прерывания. Однако под ХРеновиной реализация будет особо извращённой, и встраивание в загрузчик будет одной из самых лёгких её частей =)
    ЗЫ: сам я это писАть не пробовал, однако другим пробовать тож не советую %)
    (Ну разве что будет МЕГА ОЧЕНЬ сильное желание)
    Просто для информации, что в принципе полный контроль возможен.
  • Denis__ © (16.06.08 10:26) [14]

    > Ctrl+Alt+Del не блокирует

    Ещё как блокируется.

    >  полный контроль возможен.

    А я о чём?
    > Тем более, что в вопросе нет никакого криминала.


    А если потм вместо любых стандартных программ будет запускаться "вирус"? Тебе это понравится?
  • Тын-Дын © (16.06.08 13:18) [15]

    > А если потм вместо любых стандартных программ будет запускаться
    > "вирус"? Тебе это понравится?


    С чего бы это?
    Есть конкретный вопрос. Остальное - домыслы.
  • Anatoly Podgoretsky © (16.06.08 14:17) [16]
  • Anatoly Podgoretsky © (16.06.08 14:31) [17]
    > Anatoly Podgoretsky  (16.06.2008 14:17:16)  [16]

    Вот рабочая ссылка

    http://www.podgoretsky.com/ddp/chaos.aspx
  • Denis__ © (17.06.08 11:30) [18]

    > С чего бы это?

    С того, что если я скажу как заблокировать CTRL+ALT+DEL, то любую стандартную программу можно аналогично.
  • grate (17.06.08 23:40) [19]

    > Ещё как блокируется.


    Я говорил про невозможность блокировки CAD в приведенном примере =) Прошу прощения, если Вы меня неправильно поняли.

    Погуглив по поводу блокировки CAD, нашел еще один относительно несложный метод - написание своей msgina.dll.
 
Конференция "WinAPI" » Блокировка клавиатуры + мыши под Win XP [D5, D6, WinXP]
Есть новые Нет новых   [134435   +33][b:0][p:0.001]