Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 2
Регистрация: 09.12.2014
Сообщений: 54

Событие на завершение программы

03.11.2015, 22:40. Показов 2161. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа запускается автоматически при запуске системы. По событию FormCreate прописал
C++
1
2
 Application->ShowMainForm = false;
 TrayIcon1->Visible = true;
,далее код на вставку текущего времени в бд. Всё вставляется всё работает.
В событии FormClose записан код на изменение записи в бд,а именно вместо пустого поля,которое до этого не заполнялось вставляется время завершения программы. По моей идее FormClose должно срабатывать при выключении компьютера.(Как имитация убить процесс в диспетчере задач) Но к сожалению второе время не вставляется по выключении компьютера. Что самое интересное,если бы в FormCreate не прописать
C++
1
 Application->ShowMainForm = false;
,то всё чудесно вставляется.(при убийстве процесса)Вот только мне необходимо что,бы кроме значка в трее ничего не было видно.Не могли бы подсказать,что я делаю не так.Может не то событие надо использовать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2015, 22:40
Ответы с готовыми решениями:

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

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

Аварийное завершение работы программы
Использую CodeGear C++ Builder 2007. Проект, на котором расположены компоненты: Treeview, Splinter, WebBrowser. Компилирую, все в порядке,...

11
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
04.11.2015, 00:03
А если записать в событии
C++
1
2
3
4
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
 
}
0
2 / 2 / 2
Регистрация: 09.12.2014
Сообщений: 54
04.11.2015, 00:42  [ТС]
к сожалению не помогло
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.11.2015, 08:35
Flamehaze, при снятии процесса через диспетчер задач
(имеется в виду вкладка "процессы") он не получает никаких уведомлений,
просто удаляется из системы и все, поэтому регистрировать какие-то
функции обработчики бесполезно - они не будут вызываться.
1
2 / 2 / 2
Регистрация: 09.12.2014
Сообщений: 54
04.11.2015, 13:14  [ТС]
однако же ,если не скрывать главную форму,то при закрытии процесса всё регистрирует и записывает в бд.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.11.2015, 14:57
Flamehaze, диспетчер задач просто делает Terminate процессу.
После этого сам процесс удаляется из системы без каких-либо нотификаций.
Процессу не посылаются никакие оконные сообщения, в dllmain не приходит
DLL_PROCESS_DETACH и т.п. С точки зрения самого процесса он в определенный
момент просто перестает существовать. Никакая "регистрация в бд" в этот
момент уже невозможна, потому что процесса уже не существует.
1
2 / 2 / 2
Регистрация: 09.12.2014
Сообщений: 54
04.11.2015, 18:57  [ТС]
ну это может и так,но тогда вот как ты объяснишь,что если в трей не убирать форму и убить процесс то код,что записан в FormClose выполняется.

Добавлено через 1 час 15 минут
в любом случае как мне по завершению работы компьютера сделать так что бы добавлялась запись в базу данных?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.11.2015, 19:07
Цитата Сообщение от Flamehaze Посмотреть сообщение
если в трей не убирать форму и убить процесс то код,что записан в FormClose выполняется.
Открой диспетчер задач, вкладку с процессами (не приложениями, а именно процессами) и
прибей этот процесс. Никакой код в FormClose выполняться не будет. Это же азы
программирования в Windows, не знаю, что еще тут можно доказывать.
Закрытие программы "крестиком" или отправкой ей оконного сообщения - это одно, а
TerminateProcess - это совсем другое.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,873
Записей в блоге: 12
04.11.2015, 19:53
Цитата Сообщение от Flamehaze Посмотреть сообщение
Как имитация убить процесс в диспетчере задач
- это совсем не
Цитата Сообщение от Flamehaze Посмотреть сообщение
по завершению работы компьютера
. Для того, чтобы отловить завершение работы (штатное, разумеется, а не отключение рубильника), нужно ловить и быстро обрабатывать событие WM_QUERYENDSESSION.
1
2 / 2 / 2
Регистрация: 09.12.2014
Сообщений: 54
04.11.2015, 19:58  [ТС]
если не сложно,не могли бы пожалуйста пример для моего случая с этим WM_QUERYENDSESSION привести. Просто понятия не имею как,куда и что вставлять.Был бы очень благодарен.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,873
Записей в блоге: 12
04.11.2015, 20:01
Здесь показывал: Завершение приложения при перезагрузке
0
2 / 2 / 2
Регистрация: 09.12.2014
Сообщений: 54
04.11.2015, 20:16  [ТС]
вроде помогло
сделал так.
C++
1
2
3
4
5
private:
  BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER(WM_QUERYENDSESSION, TMessage, OnShutdown)
    END_MESSAGE_MAP(TForm)
    void __fastcall OnShutdown(TMessage & Msg);
C++
1
2
void __fastcall TForm1::OnShutdown(TMessage &Msg)
{//код на вставку}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2015, 20:16
Помогаю со студенческими работами здесь

Завершение программы, управляющей прибором
Собственно вопрос, есть программа, которая заставляет анализатор спектра функционировать неким образом... но... в процессе работы никакой...

Завершение программы при выходе из Windows (перезагрузка, выключение)
Всем привет. Искал-искал - не нашёл ничего. Может, плохо искал... Проблема такая. При выходе из программы стоит стандартный...

Перехватить событие из внешней программы
Подскажите где можно подробно почитать про события (по русски). Суть вопроса нужно перехватить событие (не знаю какое) чтобы подменить...

Отловить событие завершения программы
Доброго времени суток. Проблема такая. Как отловить событие закрытие программы из диспечера задач? Пробывал в событиях onDestroy...

Завершение программы при закрытии формы только по команде пользователя, а не по закрытию формы кодом
В общем , когда программа открывается срабатывает событие OnShow() и открывается другая форма Form4->ShowModal(). В этой форме...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru