Закрытие окна

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Malone32®
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 23.01.2005 (Вс) 21:19
Откуда: Оттуда

Закрытие окна

Сообщение Malone32® » 10.02.2005 (Чт) 22:28

Как сделать так, чтобы при нажатии на крестик в верхнем правом углу окна программа не завершалась, а, например, пряталась?

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 10.02.2005 (Чт) 22:32

Код: Выделить всё
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = 0 Then Cancel = 1: Me.WindowState = 1
End Sub

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 10.02.2005 (Чт) 23:27

или просто Form_Unload юзай
Изображение

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 11.02.2005 (Пт) 0:15

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = True 'Отменяем событие
Me.WindowState = 1 'Сворачиваем форму
End Sub

:roll: :wink: :lol:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.02.2005 (Пт) 0:19

Оппа, а давайте я тоже отвечу :lol: :lol:
Код: Выделить всё
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
    Cancel = 12345
    WindowState = vbMinimized
End If
End Sub


Кто ещё? :-)
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.02.2005 (Пт) 0:27

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const SC_MINIMIZE = &HF020&
Private Const WM_SYSCOMMAND = &H112

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
    Cancel = Abs(CLng(True))
    SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0
End If
End Sub


:p

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 11.02.2005 (Пт) 0:37

зачем столько, бедный юзверь запутается!!
Изображение

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 11.02.2005 (Пт) 0:39

а через диспетчер задач => приложения твою прогу всё равно отрубят
Изображение

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 12.02.2005 (Сб) 12:39

HotKitten писал(а):а через диспетчер задач => приложения твою прогу всё равно отрубят

Пару деньков назад, я решил пофантазировать над тем как сделать такой момент в проге - неотрубаемую по средствам диспечеров всяких, вроде чтото получилось. Она короч запускает два процесса и они всё-время проверяет наличие друг друга, и если одной нехватает, то запускается резервная, и ещё одна которая опять проверяет наличие другой :wink:
On Fatal Error Resume Next

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.02.2005 (Сб) 13:24

Eduard, этой шутке минимум 30 лет, она даже в Jargon File есть.
Изображение

Костя
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 14.02.2005 (Пн) 6:45
Откуда: Новосибирск

Сообщение Костя » 14.02.2005 (Пн) 11:07

HotKitten писал(а):а через диспетчер задач => приложения твою прогу всё равно отрубят


1. App.Taskvisible = 0
2.При компиляции даём проге имя какого-нидь системного процесса (напр. lsass.exe). Топором не вырубишь!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.02.2005 (Пн) 11:10

tyomitch, думаю тебе будет интересно :)
Такая штука применялась касперским, только забыл в какой версии, то ли третий, то ли четвертый.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.02.2005 (Пн) 11:10

Костя, если вырубать не из Task Manager'а, а кодом (или же другой утилитой), то вырубится запросто.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot], Yandex-бот и гости: 12

    TopList