Блокирование интерфейса

Тема в разделе "WASM.NT.KERNEL", создана пользователем Drakon, 15 май 2006.

  1. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    У меня возникла такая проблемка: нужно сделать чтобы если запущена моя программа, то нельзя было переключаться на другие задачи, нажимать там на меню пуск и т. д. Короче чтобы все сообщения с клавиатуры и мыши которые в итоге идут не к окну моей программы просто блокировались. И самое главное прога должна в винде начиная с версии 98.

    Так вот два вопроса:

    1. Есть какие-нить встроенные в винду средства чтобы просто это сделать?

    2. Я вижу вариант типа в explorer'е найти оконную процедуру или что-нить такую и поковырять её. Криво?
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.548
    Адрес:
    Russia
    Вы не учли, что CTRL-ALT-DEL просто так не перехватишь. К тому же, кто такой прогой пользоваться будет? Ведь нет свободы действий.

    А так есть вариант писать драйвер (для NT отдельно, для 98 отдельно) он будет перехватывать все и вся.

    Но сразу скажу , что так просто тяп-ляп не получится.
     
  3. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    TermoSINteZ





    Такие программы устанавливают на компьютеры в общественных местах, в библиотеке например, или я помнится как-то для бензозаправки что-то похожее делал.



    Drakon



    CTRL-ALT-DEL я запрещал заменой gina.dll на свою собственную. Все остальное можно перехватить хуками.
     
  4. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Такс.. Чтобы заменить gina в работающей системе надо знать кто использует эту библиотеку? Вроде только winlogon... Или я не прав. И как сделать замену? Я так понял надо перехватить только вызов функции WlxLoggedOnSas в процессе winlogin: библиотека msgina.dll?



    Насчёт хуков: где можно почитать? =)
     
  5. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
  6. Guest

    Guest Guest

    Публикаций:
    0
    Смотрите проще Господа =)

    Explorer.exe->Suspend

    Winlogon.exe->Suspend
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Единственная клавиша, которую не получится нормально "перехватить" через WM_KEYDOWN - F10. Все остальные сами посылаются сначала обработчику главного окна и если их не погасить, далее превращаются в системные команды. Ctrl+Alt+Del можно временно запретить через реестр (проверял только на XP). В msn можно найти в какой ветке и что менять для отключения Ctrl+Alt+Del.
     
  8. spn_dd

    spn_dd New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    22
    Адрес:
    Ukraine
    т.к. все переферийные устройства имеют контроллеры, то лучшим вариантом является блокирование именно на этом уровне, а для этого однозначно необходимо писать драйвер.



    Но тебя такое конечно не устроит, так что только хуки.
     
  9. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    На 9х можно заблокировать alt+tab, alt+esc, ctrl+esc, ctrl+alt+del и тп вызовом
    Код (Text):
    1. call    SystemParametersInfoA, 61h, 0, offset some_buf, 0


    второй параметр = 0 => заблокировать, 1 => разбл.



    На nt -- SetWindowsHookExA, но с её помощью 3 пальца нельзя хукнуть.
     
  10. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Вот трофейная дллка с примером использования:

    [​IMG] 1545077570__khook.rar
     
  11. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
  12. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    А нельзя сделать прозрачное окошко программы на весь экран? Только чтобы поверх всех окон выло, при потере фокуса опять переключаться на себя. Тогда никакие сообщения другим окнам не дойдут, т.к. они будут приходить окошку твоей проги.
     
  13. zxm

    zxm New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    71
    Что касается перхвата контр альт делита. Мне это нужно для моей програмы. Там типа отключение клавы и мыши. Для отключения использвоал функцию BlockInput из user32.dll. Вот с CAD возникли проблемы. Я знаю три способа перехвата CAD(речь идёт тока об 2000/2003/XP):
    1. Замена msgina.dll. Это можно сделать и заменой файла и добавлением ключика в реестре(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDll) на адрес нашей длл. Написать длл не сложно так как по сути это дллл-обёртка. В ней все функции (их насколько я помню 10) вызываются без изменений у настоящей джины, кроме WlxLoggedOnSas - она вызвается при CAD.
    Недостаток этого способа это то что установка Джина с помощью ключа в реестре тербует перезагрузки и то что в вин 2000 и 2003 при нажатии КАД проиходит переключение декстопов. При перехвате происходит мелькание экрана. Поэтому этот способ мне не подходит

    2. Винлогон регистрирует КАД при помощи функции RegisterHotkey. При нажатии КАД окно винлогона, на которое зарегитрироват хотки получается сообщенеи WM_HOTKEY.
    Так вот способ такой: Длл-инджектион в винлогон, изменение обработчика окна на свой. Окно обрабатываеющее КАД можно найти FindWindow('SAS Window class', 'SAS window' ), изменить обработчик с помощью SetWindowLong. Недостаток у этого способа это то что некоторым умным антивирусам не нравится длл-инджектион. Поэтому этот способ мне тоже не подходит.

    3. Написание драйвера-фильтра клавиатуры.