Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > VB6 > Отловить событие закрытие программы |
Автор: eldar22 27.5.2009, 16:55 |
Так вот когда запускаешь программу, а потом её закрываешь не кнопкой, а диспетчером задач Вот как такое событие отловить? |
Автор: Rrader 27.5.2009, 18:01 |
Из сторонней программы\драйвера. |
Автор: eldar22 27.5.2009, 18:16 |
Нт наверное меня не поняли вот у меня есть моя программа Когда я её запустил на 5 минут допустим, а потом я её хочу закрыть через диспетчер задач и если программа закрылась через диспетчер задач то она посылает post запрос |
Автор: amt 27.5.2009, 18:36 |
Событие Query Unload Более практичным, чем Unload, является событие QueryUnload. Наряду с параметром Cancel в процедуру обработки события передается и параметр UnloadkMode, указывающий причину возникновения события. Параметры OnloadMode в QueryUnload Константа Значение Причина возникновения события vbFormControlMenu 0 Пользователь закрыл приложение посредством [Alt+F4], кнопки Close (Закрыть) окна или одноименной команды системного меню vbFormCode 1 В коде выполняется команда Unload vbAppWindows 2 Завершение сеанса Windows vbAppTaskManager 3 Выход из приложения с помощью менеджера задач vbFormMDIForm 4 Дочерняя форма MDI закрыта, так как закрыта вышестоящая форма MDI |
Автор: Akina 27.5.2009, 18:42 |
Однако при "жёсткой" выгрузке приложение вообще никакого сообщения не получит - только пинок коленом под зад... впрочем, под Виндами такую выгрузку сделать не так уж и просто - все штатные или околоштатные средства сначала пытаются решить дело миром, и только если "Приложение не отвечает" - тогда извини... |
Автор: Прибой94 27.5.2009, 18:48 |
Я пользуюсь функцией Form.Unload. Работало даже при закрытии при помощи Диспетчера. PS: Делал незакрывающиеся программы ![]() |
Автор: eldar22 27.5.2009, 19:02 | ||
Ну чё то все равно не отправляет В чём проблема? |
Автор: Akina 27.5.2009, 20:42 |
ТО есть Вы хотите сказать, что тот же код, но размещённый, скажем, в Button_Click, отправляет? |
Автор: eldar22 27.5.2009, 21:11 |
Нет я хочу сказать когда я закрываю программу с помощью диспетчера задач то программа не отправляет post запрос |
Автор: Akina 27.5.2009, 21:27 |
Ничего не понимаю... а нахрена тогда был приведён код выше? |
Автор: eldar22 27.5.2009, 21:45 |
Код был приведён чтобы разобраться Попробую объяснить на пальцах ![]() 1 есть программа 2 запускаешь её 3 жмёшь ctrl+alt+delete 4 ищешь процесс программы 5 завершаешь процесс программы 6 программы посылает post запрос ВсЁ ![]() |
Автор: Akina 27.5.2009, 22:10 |
Так. И где твой код, который должен выполнять пускт 6, но не выполняет? тольько не говори, что ты его привёл выше - это заведомо не так. |
Автор: eldar22 27.5.2009, 22:18 |
Akina тогда скажи как сделать то что я хочу ? |
Автор: neic 29.5.2009, 11:56 | ||
Ну не POST, а GET...чё придераешся? =) I_Am_Rock Правильно думаешь =) |
Автор: eldar22 29.5.2009, 20:19 |
Код будет работать когда в диспетчере завершаешь работу программы он не работает когда завершаешь процесс программы |
Автор: Kardinalli 13.6.2015, 16:33 |
Подниму старую тему, с вашего позволения. Так как все же можно отследить принудительное завершение процесса самой завершаемой программой? Суть: есть программа (лоадер), которая запускает дочернюю программу. При закрывании дочерней программы, лоадер тоже заканчивает работу. Если закрыть лоадер, так же закрывается дочерняя. Но если процесс лоадера закрыть принудительно, через диспетчер, то дочерняя программа остается работать. Никакие события (QueryUnload, Unoad, Terminate) при этом не отрабатывают. Как все же отловить сие? |
Автор: Akina 15.6.2015, 00:15 |
Kardinalli, самое дубовое - наладить между ними обмен сигналами "я ещё живой"... |
Автор: Kardinalli 16.6.2015, 18:11 |
Если бы ОБЕ софтины писал я, то без проблем, взаимный мониторинг и дело в шляпе. Но запускаемая программа - сторонняя, без признаков исходников, к тому же на дельфи. Так что, фиг она будет следить за мамой... ![]() |
Автор: Akina 16.6.2015, 18:42 |
Kardinalli, ну хотя бы одна из них - твоя? если нет - придётся писАть третью. Программу-монитор. |