Логотип
Главная 
Практика 
Игры 
Софт 
Ссылки 
Анекдоты 
Баланс звука
ПРАКТИКА
Изменение баланса
Предыдущая тема  |  Практика. Тема 13  |  Следующая тема

Запрет закрытия окна.

         Вам нужно сделать так, чтобы пользователь не смог закрыть окно Вашей программы и выйти из неё. Запретить закрытие окна легко реализовать добавлением к коду программы всего нескольких строк!

         Откройте новый стандартный проект, разместите на форме кнопку CommandButton с именем Command1, CheckBox с именем Check1. Для выхода будет служить кнопка и стандартная красная кнопка с крестиком в правом верхнем углу окна в ControlBox. CheckBox нам будет нужен в роли условия в Вашей программе, при выполнении которого выход станет возможен. Теперь поместите код в модуль формы:

'Объявим переменную для определения возможности выхода
Dim Выход As Boolean

Private Sub Check1_Click()

'''ПРОЦЕДУРА ОБРАБОТКИ ИЗМЕНЕНИЯ НАЛИЧИЯ ФЛАЖКА'''
'Меняем состояние переменной возможности выхода на обратное:

Выход = Not (Выход)
End Sub

Private Sub Command1_Click()

'''ПРОЦЕДУРА НАЖАТИЯ КНОПКИ ВЫХОДА'''
'Если выход разрешён, делаем это (Фрагмент кода "Выход" равносилен фрагменту "Выход = True", _
поэтому для сокращения кода убираем "= True"):

If Выход Then End
'Если выход не был разрешён, переходим к процедуре обработки _
события закрывания окна, в которой это закрывание и отменим:

Form_QueryUnload False, 0
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

'''ПРОЦЕДУРА ОБРАБОТКИ СОБЫТИЯ - ЗАКРЫВАНИЕ ОКНА'''
'Если выход запрещён, запускаем нашу же программу ещё раз:

If Выход = False Then Shell App.EXEName, vbNormalFocus
'Закрываем программу:
End
End Sub


         Откомпилируем проект в отдельную exe-программу, запустим её. Теперь попробуем выйти через кнопку или нажатием на красную с крестиком - программа перед своим закрытием вызывает себя снова, возрождаясь, подобно Фениксу!

         А теперь о дёгте. После нажатия "Ctrl-Alt-Del" во время работы запущенной программы попытаемся на вкладке "Приложения" нажать "Снять задачу". Конечно же, эффект будет как и при нажатии кнопки выхода при запрете выхода. Но вот если заглянуть в список работающих процессов... Мне ничего неизвестно о том, существует ли способ запрета показа списка запущенных процесов или запрета их отмены в WindowsXP. Если кому что известно - пожалуйста, сообщите. В Windows98 запрет на показ программы в списке процессов делается при помощи функции Win32 API - RegisterServiceProcess.

Предыдущая тема  |  Практика. Тема 13  |  Следующая тема

alexansol@mail.ru