Вопрос по Delphi

  • Автор темы Artexoid
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Artexoid

#1
Помогите мне подалуйста, у меня такая проблема. Я не могу сделать так чтобы при запуске программы (написана на Delphi 6) она отключала (в Windows XP) реакцию системы на нажатие CTRL+ALT+DEL, CTRL+ESC, ALT+TAB. Помогите пожалуйста.
 
B

Barmutik

#2
Под 95-97 всё просто ... SystemParametersInfo (97, 1, @OldVal, 0);

А вот под NT-based система .. вперёд писать VxD драйвер ... а там уж перехватывай и делай что хочеш...
 
A

Artexoid

#3
Расскажите мне пожалуйста как это делается, никогда дела с драйверами не имел и незнаю как их писать и использовать. Объесните как можно подробнее если можно.
Заранее Вам спасибо.
 
Z

zubr

#4
Если без драйвера, то можно Hook на клаву поставить.
 
B

Barmutik

#5
Hook не поможет перехватить system keystrokes.. вызов хуков в цепочке производится после обработки этих комбинаций (насколько мне не изменяет память)

А насчёт написания драйверов:

1. Берёш драйвер
2. Пишиш его
3. Используеш его

:D Как можно спрашивать такие вещи .. берутся книжки и читаются... :D
 
?

????

#6
Artexoid
на w a s m . r u читай цикл статей Драйверы режима ядра: ...
например _http://wasm.ru/article.php?article=drvw2k16
А вообще Barmutik очень хорошо описал процедуру написания драйверов :D
 
V

Vint

#7
Помогите мне подалуйста, у меня такая проблема. Я не могу сделать так чтобы при запуске программы (написана на Delphi 6) она отключала (в Windows XP) реакцию системы на нажатие CTRL+ALT+DEL, CTRL+ESC, ALT+TAB. Помогите пожалуйста.
Да уж... Под 95-98 всё достаточно просто... А уж НТ ;) ... Могу посоветовать одно: найди в нете справочник kuliba.chm, там достаточно много, что можно найти
 
B

Barmutik

#8
Вот .. как раз нашёл в MSDN случано...

Для Windows NT/200 и т.д... можно поставить SetWindowsHookEx использовав параметр KEYBOARD_LL... т.е. Low Level что позволяет перехватывать системные комбинации ... самое главное что даже без использования DLL.
 
Z

zubr

#9
Вообще то по простухе можно в цикле появление соответствующего окна отслеживать и как только появится посылать ему WM_CLOSE
 
B

Barmutik

#10
Хммм.. странно решение... вопрос был как отключить(перехватить) нажатие клавиш .. а не как закрыть соответствующее окно...
 
Z
#11
Barmutik
Помогите мне подалуйста, у меня такая проблема. Я не могу сделать так чтобы при запуске программы (написана на Delphi 6) она отключала (в Windows XP) реакцию системы на нажатие CTRL+ALT+DEL, CTRL+ESC, ALT+TAB.
Как я понимаю, человеку надо, чтобы юзер при нажатии CTRL+ALT+DEL не мог к примеру просмотреть процессы, или убить какой нить процесс. А если это так, то почему нельзя как только появится соответствующее окно, его убить.
 
A

Artexoid

#12
Большое спасибо за помощ!!!
Я обязательно еще что-нибудь спрашу :( !!!
 
Z
#13
Artexoid
Интересно было бы узнать решил ли ты свою проблему, а если решил то как.
 
L

lodyr

#14
Помогите мне подалуйста, у меня такая проблема. Я не могу сделать так чтобы при запуске программы (написана на Delphi 6) она отключала (в Windows XP) реакцию системы на нажатие CTRL+ALT+DEL, CTRL+ESC, ALT+TAB. Помогите пожалуйста.
Поскольку программы написана на Delphi, то используй компонент
DWinlock v1.1 for Delphi 4,5,6,7 (23-9-2004) 238 KB
Компонент предназначенный для ограничения доступа к окнам Windows (от 95 до XP). Это делается путем блокирования функциональных клавиш (например Ctrl+Alt+Del).
А береш его FlashGet'ом отсюда:
УРЛ: _http://soft.0zones.com/SoftDown.asp?ID=8739
Архив: DWinlock.v1.1.For.Delphi4567.rar
 
B

Barmutik

#15
У меня тут был завёлся классный вирус ... так вот он что б себя прятать и в процессах и на диске свои файлы использует
rootkit технологию .. масса информации по этому в инете... может это ещё поможет ..

Самое прикольное что его и антивирусы не лечили потому как они во время сканирования диска его просто на диске не видели...
 
Z
#16
Самое прикольное что его и антивирусы не лечили потому как они во время сканирования диска его просто на диске не видели...
Антивирусы умеют находить только известные вирусы. А что Касперского надурить ничего не стоит. Я как то со скриптом-вирусом экспериментировал. Сначала поменял имя файла, Касперский еще сработал, но когда поменял имя процедуры, Касперский сдох.
 
S

Shnur

#17
// CTRL+ALT+DEL
var
i:integer;
begin
i:=0;
SystemParametersInfo(SPI_SCREENSAVERUNNING, 1, @i, 0);
end;

//ALT+TAB
var
i:integer;
begin
i:=0;
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @i, 0);
end;
 
P

Poseidon

#18
Между прочим, от ALT+TAB программа очень даже просто скрывается:

Код:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
ShowWindow(Handle, SW_HIDE); 
ShowWindow(Application.Handle, SW_HIDE); 
end;
 
K
#19
Станадартным решением данной проблемы является перехват апи функции NtQuerySystemInformation.Скрывая при этом наше приложени от Диспетчера задач. При реализации внедрении перехватывющй длл через хооки не требует админских прав.
 
R

R@bbit

#20
Эти комбинации блокируются при включение режима экранной
заставки вот и включай этот режим:
// Включение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
// Выключение режима
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
Должно работать.
 
Статус
Закрыто для дальнейших ответов.