Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381

Отловить запрос закрытия своего приложения

12.02.2015, 14:12. Показов 2632. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день , не могли ли вы мне помочь, мне нужно при нестандартном закрытии (при отключении винды или через диспетчер ) программа сохраняла в файл настройки , именно при не стандартном закрытии... есть функция onclose, но она работает только при закрытии через крестик ... можете подсказать ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2015, 14:12
Ответы с готовыми решениями:

Как отловить событие для своего класса?
класс: TSomeClass = class(TObject) procedure OnKeyDown(var Message); message WM_KEYDOWN; end; var C: TSomeClass; begin

Механизм закрытия дочерних форм приложения
Добрый день. Пытаюсь сообразить, как грамотно реализовать механизм закрытия дочерних форм приложения. Есть 2 ситуации: 1) Дочерняя...

Данные в файл сохраняются только после закрытия приложения
Добрый день! Задание такое. На главной форме имеются 2 кнопки: <Изменить> и <Показать>. По нажатию кнопки <Изменить> появляется...

15
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
12.02.2015, 14:19
Точно незнаю, но кажется при отключении винды вроде нельзя уже работать твоей программе.
Если кто что посоветует рабочий код- то это будет хорошо.
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
12.02.2015, 14:19
Цитата Сообщение от vuasya Посмотреть сообщение
(при отключении винды или через диспетчер
Это тоже стандартное закрытие. OnClose должен вызываться.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
12.02.2015, 14:28
Цитата Сообщение от vuasya Посмотреть сообщение
при отключении винды
Винда при этом посылает окнам сообщение WM_ENDSESSION с параметром LParam = ENDSESSION_CLOSEAPP
- вот его лови и сохраняй там свои настройки.

Только шустрей это делай)

Цитата Сообщение от vuasya Посмотреть сообщение
или через диспетчер
Диспетчер попросту уничтожит твой процесс, не давая ему никаких шансов выполнить экстренные телодвижения)

Но в принципе существует возможность инсталлировав в систему свой драйвер режима ядра перехватывать событие уничтожения своего процесса до того как он будет уничтожен, с целью известить тем или иным образом свой процесс о грядущей аварийной его ликвидации
1
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
12.02.2015, 14:32
Цитата Сообщение от mss Посмотреть сообщение
Диспетчер попросту уничтожит твой процесс, не давая ему никаких шансов выполнить экстренные телодвижения
Это ты про какой-то злой диспетчер говоришь. Нормальный диспетчер ласково попросит приложение закрыться.
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
12.02.2015, 14:36
Тогда что-бы точно понять запишет ли программа, успеет ли записать лог файл до своего закрытия давайте оттестим этот код:

Delphi
1
2
3
4
5
6
7
8
9
var
  List: TStringList;
begin
  List:= TStringList.Create;
  List.Add('Òåñò çàêðûòèÿ');
  List.Add('Ïðîãðàììà çàêðûòà â '+ TimeToStr(Now));
  List.SaveToFile('log.txt');
  List.Free;
end;
Данный код у меня был помещен на событие OnDestroy формы, программу я закрывал с диспетчера задач и код отработал, создал лог файл!
Давайте теперь оттестим этот код на выключение винды?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
12.02.2015, 14:57
Цитата Сообщение от northener Посмотреть сообщение
Нормальный диспетчер ласково попросит приложение закрыться
Сначала-то да, ласково просит)
А как не допросится - проведет экзекуцию, попросив разрешения у юзера)
0
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
12.02.2015, 15:20  [ТС]
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Данный код у меня был помещен на событие OnDestroy формы, программу я закрывал с диспетчера задач и код отработал, создал лог фа
у меня не создал .... создает только при нажатии на крестик (тобишь обычное закрытие )

Добавлено через 1 минуту
вообще, мне это нужно сделать, чтоб если программа не закончила работу, а винда к примеру отключилась , то она сразу лезет в автозапук и записывает где остановилась и при запуске опять начала работу.... эх ..
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
12.02.2015, 15:30
Цитата Сообщение от vuasya Посмотреть сообщение
вообще, мне это нужно сделать, чтоб если программа не закончила работу, а винда к примеру отключилась
Дак я тебе код для этого и написал!

Запускай программу с данным кодом помещенным на уничтожение формы и отключай винду с запущенным тест приложением!
Затем заходи после запуска винды и смотри есть ли лог файл!?

А он ведь по идее может там и быть, так как мы форму не закрывали, а мы закрыли виндовс, и форма твоя уничтожилась по идее от закрытия виндовса, а что там на уничтожение формы стояло? не помниш? Правильно создать лог файл!

Иди протести данное приложение, о результате теста и о наличии лог файла тут потом и сообщиш.
0
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
12.02.2015, 15:39  [ТС]
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Иди протести данное приложение, о результате теста и о наличии лог файла тут потом и сообщиш.
протестил, файл не создался ... есть еще варианты ?
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
12.02.2015, 15:49
Цитата Сообщение от vuasya Посмотреть сообщение
протестил, файл не создался ...
Это плохо тогда..
Значит простым способом задачу тогда не решить.

Отслеживай тогда сообщения которые посылает винда при завершении работы, там mss тебе написал, если неполучится то попроси у него рабочий код может тебе и соберет..
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
12.02.2015, 15:53
Цитата Сообщение от vuasya Посмотреть сообщение
протестил, файл не создался ... есть еще варианты ?
Знать плохо разработана твоя программа, что не реагирует на сообщения. Тогда вариантов нет никаких.
0
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
12.02.2015, 16:04  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Знать плохо разработана твоя программа,
я пустую форму создал и процедуру ondestroy и все + на всякий случай onclose добавил ... но создается только при простом закрытии ....

Добавлено через 1 минуту
Цитата Сообщение от mss Посмотреть сообщение
Но в принципе существует возможность инсталлировав в систему свой драйвер режима ядра перехватывать событие уничтожения своего процесса до того как он будет уничтожен, с целью известить тем или иным образом свой процесс о грядущей аварийной его ликвидации
можно примерчик ?
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
12.02.2015, 16:13
vuasya,
Слушай- а ты не обманул ли меня случайно что тестил приложение?

Я сейчас протестил тот код что тебе дал на такие варианты:

Закрыть тест приложение с диспетчера задач
- результат: лог файл создан!

Перезагрузить виндовс
- результат: лог файл создан!

Завершить работу виндовс
- результат: лог файл создан!

По результам теста во всех случаях у меня лог файл был создан! Windows-7 у меня.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
12.02.2015, 16:19
Цитата Сообщение от vuasya Посмотреть сообщение
можно примерчик ?
А смысл ?
Ты где его, этот драйвер, компилять собрался ?)
В Делфи тебе это не удастся сделать)
0
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
12.02.2015, 16:35  [ТС]
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Закрыть тест приложение с диспетчера задач
- результат: лог файл создан!
Перезагрузить виндовс
- результат: лог файл создан!
Завершить работу виндовс
- результат: лог файл создан!
По результам теста во всех случаях у меня лог файл был создан! Windows-7 у меня.
у меня вин 7 х64 и не создается ни при каких случаях, которые ты писал... может из за винды тож зависит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.02.2015, 16:35
Помогаю со студенческими работами здесь

Защита своего приложения в Delphi
Всем добрый вечер. Сегодня передо мной встал такой вопрос: Как скрыть происхождение программы (среда программирования, в которой она была...

Запуск своего приложения с параметрами
Как сделать приложение, которое можно запускать с определёнными параметрами. Ну к примеру через командную строку app.exe -t 500

Отправка почты из своего приложения
Вот хочу программно отправить письмо через программу но не получается вот пишу! а он выдает ошибку не при компиляции а при нажатию на...

Плагин для своего приложения
нужно написать плагин для своего приложения (приложение и плагин на делфе 7). Подскажите статейку по теме. Надо просто в приложении...

Пробная версия для своего приложения
как в delphi поставить срок на пробную версию?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru