Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > ctrl+alt+del


Автор: SeT 13.4.2005, 11:09
Не знаете, как заблокировать эти кнопки? В 98 умею, а в ХР не получается. Помогите-е-е!!!

Автор: Mephisto 13.4.2005, 11:21
Необходимо создать эмуляцию экранной заставки! Зайди на Гугел, и фключи поиск по ScreenSaver VB. Что-нить да появится, а вообще, если можешь, выложи сюда код для 98! Может мы поправим и будет у тебя для ХР.

Автор: efedron 13.4.2005, 12:19
заблокировать контрол-аль-дел можно только на 9х (функция RegisterServiceProcecc если не ошибаюсь), а вот в NT эта комбинация работает всегда. smile

Автор: Exception 13.4.2005, 12:20
Цитата(SeT @ 13.4.2005, 12:09)
а в ХР не получается

И не получится. В XP это дырка заделана. В 98 нужно вызывать SystemParametresInfo, как-то так

Автор: Akina 13.4.2005, 12:46
В 2000-ХР-2003 система независимо ни от чего самостоятельно обрабатывает это нажатие. Впрочем, надо отдать ей должное, по цепи событие все-таки передается - т.е. если отказом закрыть окно, то нажатие попадает в активное приложение (где обычно умирает за ненадобностью).

Единственная возможность - свой драйвер работы с портом периферии (клавиатуры).

Автор: efedron 13.4.2005, 21:27
ой, прошу прощения - перепутал, в 9х контрол-альт-дел блокируется функцией SystemParametersInfo с параметром ..как-то SCREENSAVER_ACTIVE (что-то очень похожее), а RegisterServiceProcess - скрывает процесс из диспетчера 9х smile

Автор: Mephisto 14.4.2005, 15:43
Цитата(Akina @ 13.4.2005, 12:46)
В 2000-ХР-2003 система независимо ни от чего самостоятельно обрабатывает это нажатие.

А как же ScreenSaver'ы. В них тоже можно нажать волшебные клавишы? Даже когда их под пароль ставишь?

Автор: Akina 14.4.2005, 16:01
Цитата(Mephisto @ 14.4.2005, 16:43)
А как же ScreenSaver'ы. В них тоже можно нажать волшебные клавишы? Даже когда их под пароль ставишь?

Именно так как я сказал выше - скринсэйвер сам не получает этого нажатия, его обрабатывает ядро ОС. И при необходимости передает активному приложению (скринсэйверу)

Автор: Mephisto 15.4.2005, 23:17
Цитата(Akina @ 14.4.2005, 16:01)
Именно так как я сказал выше - скринсэйвер сам не получает этого нажатия, его обрабатывает ядро ОС

Цитата(efedron @ 13.4.2005, 21:27)
SystemParametersInfo с параметром ..как-то SCREENSAVER_ACTIVE (что-то очень похожее)

Ну, так вышенаписаный код как раз и не позволяет снять задачу со скринсэйвера если там (вдруг) поставлен пароль! Но я лично не заю как это в нт реализовано. Мне самому интересно!

Автор: Exception 16.4.2005, 12:10
Так система передает c+a+d приложению? Если да, можно просто снять таскмэнэджер smile

Автор: efedron 18.4.2005, 14:07
как я понял система не передает приложению контрол альт дел, поскольку конструкция типа:
Код

If GetAsyncKeyState(17) And GetAsyncKeyState(18) And GetAsyncKeyState(46) Then
    MsgBox ""
End If

не работает, хотя если убрать любое из условий, то все в порядке...

Автор: Akina 18.4.2005, 14:26
Цитата(efedron @ 18.4.2005, 15:07)
как я понял система не передает приложению контрол альт дел, поскольку конструкция типа:

Есть такая программуська, как VMWare... Так вот, если в виртуальной машине прессануть CAD, то есссно Винда самостоятельно на это дело реагирует, выдавая стандартное окно на 6 пунктов... так вот, если его сбросить ESC-ейпочкой, Варя тут же тебе сообщает что зря ты с-под нее жал CAD, потому как хост-система это выловит первой (что собсно и наблюлось) - но ить и Варе нажатие досталось... а она своего драйвера на клаву железной рукой не ставит - чисто хуки... кстати, если есть желание великое разобаться, то сделай ЕХЕ, реагирующий на нажатие Del и выводящий состояние при этом шифтов, и в скринсэйверы его... любопытно что при этом накопается...

Автор: Exception 19.4.2005, 11:08
Между прочим, можно сделать так: при нажатии c+a твоя прога чуть подождет, а потом поищет окно диспетчера и если оно есть, заклозит его smile
Добавлено @ 11:10
Ведь c+a она ловит?

Автор: Black_Star 19.4.2005, 15:37
Есть такая ф-я SetKeyboardState() кажись. С помощью ее можно вообще всю клаву отрубить smile

Автор: efedron 20.4.2005, 11:39
Black_Star
ну, теоретически, если каждую милисекунду вызывать ее с параметром, что ни одна клавиша не нажат, то возможно, хотя че-то сомневаюсь я на счет c+a+d

Run-time error
диспетчер-то заклоузить - это дело пустяковое, основное - это победить системное меню, которое появляется после нажатия оных клавиш smile

Akina
Цитата
реагирующий на нажатие Del и выводящий состояние при этом шифтов, и в скринсэйверы его...

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)