Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать, чтобы форму нельзя было закрыть [D7, NT4, 2000, XP]


Страницы:   1 2

GrBob ©   (2006-03-31 00:27:00) 

Требуется, чтобы форму нельзя было закрыть, причем ни стандартными способами (крестик, Алт - Ф4), но и через диспетчер задач. Так же чтобы ее нельзя было свернуть, открыть что-нибудь поверх и т.д. С простым закрытием я разобрался (OnCloseQuery), а вот с диспетчером и сворачиванием не знаю как :( В двух словах - надо, чтобы пользователь не смог ничего сделать, пока не нажмет кнопку на форме.


Eraser   (2006-03-31 13:53:00) [21]

взлоиается = взломается ;-)


Eraser   (2006-03-31 13:52:00) [22]


> GrBob   (31.03.06 00:48) [2]


> Ну не такая уж и злая. Я просто хочу написать дополнительное
> залогинивание после входа в винду с некоторой доп инфой.
>

взлоиается это "залогиванивание" в 2 счёта, т.е. на раз дава ;-)
Для этих целей предусмотрены спец. средства.
см. в MSDN инфу по Winlogon and GINA.

The GINA operates in the context of the Winlogon process and, as such, the GINA DLL is loaded very early in the boot process. The GINA DLL must follow rules so that the integrity of the system is maintained, particularly with respect to interaction with the user.

The most common use of the GINA is to communicate with an external device such as a smart-card reader. It is essential to set the start parameter for the device driver to system (Winnt.h: SERVICE_SYSTEM_START) to ensure that the driver is loaded by the time the GINA is invoked.

The purpose of a GINA DLL is to provide customizable user identification and authentication procedures. The default GINA does this by delegating SAS event monitoring to Winlogon, which receives and processes CTL+ALT+DEL secure attention sequences (SASs). A custom GINA is responsible for setting itself up to receive SAS events (other than the default CTRL+ALT+DEL SAS event), and notifying Winlogon when SAS events occur. Winlogon will evaluate its state to determine what is required to process the custom GINA's SAS. This processing usually includes calls to the GINA's SAS processing functions.

и т.д.


GrBob   (2006-03-31 13:48:00) [23]


> Ее можно убрать из первой странички деспетчера, скрыв (Visible:
> =False) главную форму приложения.

Ну это не выход :) Тогда ее и юзер не увидит, не только диспетчер :)

> Делал я эту фигню в свое время. При загрузке просто создаешь
> новый рабочий стол и на нем делаешь свое окно и все. юзер
> ничего не сможет сделать пока не введет пароль или че тама
> еще. В общем для выхода из этого режима надо уничтожить
> созданный раб стол, а диспетчер задач на нем не сможет появится.
>  Вот и вся замута.

А вот это уже интересно, спасибо. Никто не подскажет ссылки на статьи по этому вопросу или хотя бы идею, в каком направлении смотреть? Окна то я создавал, но чтобы новый рабочий стол, хммм... даже не думал что это возможно :)


NightLord   (2006-03-31 11:01:00) [24]

Делал я эту фигню в свое время. При загрузке просто создаешь новый рабочий стол и на нем делаешь свое окно и все. юзер ничего не сможет сделать пока не введет пароль или че тама еще. В общем для выхода из этого режима надо уничтожить созданный раб стол, а диспетчер задач на нем не сможет появится. Вот и вся замута.


Германн   (2006-03-31 01:17:00) [25]


> GrBob   (31.03.06 00:48) [2]
>
> Ну не такая уж и злая. Я просто хочу написать дополнительное
> залогинивание после входа в винду с некоторой доп инфой.
>  Первое, что пришло на ум - сделать форму на весь экран,
>  и пока пользователь не введет нужную инфу дальше его не
> пускать. Так что 1 и 2 последних пункта отпадают. С остальным
> поразбираюсь. Хотя я где-то читал, что из диспетчера задач
> процесс можно просто скрыть. Как? И еще сделать ее Always
> on Top можно :)


Дурью маешься. Ни скрыть нельзя, ни AlwaysOnTop - тоже нельзя.
Лёгким способом можно лишь "связать детали проволокой в надежде, что пользователь не взял с собой кусачек". :-)


Rial   (2006-03-31 01:01:00) [26]

Always on Top - не ного толку будет.

А скрыть совсем программу, естественно, невозможно.
Ее можно убрать из первой странички деспетчера, скрыв (Visible:=False) главную форму приложения. А дальше - так назвать процесс, чтобы бедный юзер думал, что он - системный.


GrBob   (2006-03-31 00:48:00) [27]

Ну не такая уж и злая. Я просто хочу написать дополнительное залогинивание после входа в винду с некоторой доп инфой. Первое, что пришло на ум - сделать форму на весь экран, и пока пользователь не введет нужную инфу дальше его не пускать. Так что 1 и 2 последних пункта отпадают. С остальным поразбираюсь. Хотя я где-то читал, что из диспетчера задач процесс можно просто скрыть. Как? И еще сделать ее Always on Top можно :)


Rial   (2006-03-31 00:40:00) [28]

Какая злая программа у тебя должна получиться!
Дай угадаю: по нажатию на эту кнопку  - format c: .

- Установить режим RealTime и посильнее грузить процессор, чтобы жизнь медом не казалась.
- Отлавливать окно диспетчера в цикле и ззакрывать его при обнаружении.
- При потере формой фокуса ввода блокировать меремещение мыши, зарегистрировать все возможные горячие клавиши на себя.
- Отключить монитор, чтобы бедный юзер не смог найти твою программу в диспетчере, даже если и откроет его.
- Отключить мышь, чтобы он не мог ткнуть по строчке с программой в диспетчере.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо