Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 5
1

Завершение программы при выходе из Windows (перезагрузка, выключение)

13.10.2012, 15:40. Показов 2321. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Искал-искал - не нашёл ничего. Может, плохо искал...

Проблема такая. При выходе из программы стоит стандартный FormCloseQuery с запросом типа "Вы уверены"? Но при перезагрузке или выключении компьютера, нужно обойти этот запрос, чтобы Windows не спотыкался об программу. Как это сделать? Как различить, идёт закрытие сессии Windows-a или просто закрывается программа? Отслеживание SystemEvents.PowerModeChanged и SystemEvents.Session* - не предлагать. На VB есть параметр FormClosingEventArgs, который позволяет сделать проверку, а как это реализовать на BCB?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2012, 15:40
Ответы с готовыми решениями:

Выключение и перезагрузка Windows XP
Всем здрасте! У меня стала твориться какая то лажа с компом!!! Я установил себе XP Ultimatum(тот че...

Как сделать корректное завершение программы при выключении Windows?
Если при запущенном приложении пользователь винды нажмет "Завершение работы", это закроет вашу...

Выключение и перезагрузка ПК при загрузке игры
С недавнего времени появилась проблема. Комп работает до того момента, пока не загрузить игру....

Перезагрузка компьютера при выходе из игры
Купил я новый монитор и странная вещь начала происходить. После выхода из игр , повторюсь когда...

4
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
13.10.2012, 15:52 2
Насколько я помню, тема уже обсуждалась в этом разделе, попробуйте воспользоваться поиском.
По идее нужно ловить WM_QUERYENDSESSION, ибо Windows должен отправлять его при завершении работы. А так, если я не путаю, то при завершении работы ОС не вызывается событие OnClose формы.
0
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 5
13.10.2012, 22:16  [ТС] 3
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
По идее нужно ловить WM_QUERYENDSESSION
Спасибо. Про "WM_QUERYENDSESSION" я знаю, описано в MSDN на "SystemEvents.SessionEnding" (http://msdn.microsoft.com/ru-r... nding.aspx).
Вопрос, действительно, обсуждался, и даже несколько раз, но сколько ни искал, всё крутится вокруг "WM_QUERYENDSESSION" и "SystemEvents.SessionEnding".
А сам Borland ничего не предлагает по этому вопросу? Может, какие-то другие, нестандартные подходы?
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
13.10.2012, 22:27 4
Цитата Сообщение от arandr Посмотреть сообщение
но сколько ни искал, всё крутится вокруг "WM_QUERYENDSESSION" и "SystemEvents.SessionEnding".
И чем не устраивает?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
13.10.2012, 22:34 5
Цитата Сообщение от arandr Посмотреть сообщение
Спасибо. Про "WM_QUERYENDSESSION" я знаю, описано в MSDN на "SystemEvents.SessionEnding" (http://msdn.microsoft.com/ru-r... nding.aspx).
Вопрос, действительно, обсуждался, и даже несколько раз, но сколько ни искал, всё крутится вокруг "WM_QUERYENDSESSION" и "SystemEvents.SessionEnding".
Это самый нормальный метод, ибо если и есть какие-то штатные средства на эту тему, то они все равно будет делать тоже самое. Хотя на мой взгляд быстрее 2 строчки в Dispatch прописать.
Цитата Сообщение от arandr Посмотреть сообщение
Может, какие-то другие, нестандартные подходы?
Я уже написал, что если выход происходит через ОС, то событие OnClose формы не будет происходить. Перенесите действие из OnCloseQuery туда и все. Единственное изменение, которое потерпит Ваш код к этом случае это:
C++
1
Action = caNone; // CanClose = false;
Добавлено через 54 секунды
Но сразу предупреждаю, народная медицина сегодня работает - а завтра нет.
0
13.10.2012, 22:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2012, 22:34
Помогаю со студенческими работами здесь

При входе в винду и при выходе "завершение работы виндовс" комп подвисает
короче суть проблемы при входе в винду и при выходе "завершение работы виндовс" комп...

В Windows произошел сбой требуется перезагрузка компа.У вас есть минута для сохранения данных (при работе моей программы)
Здрасти! написал прогу для счета денег в инете,Все было хорошо, но в ХР через минут 10 нахождения...

Неожиданное завершение программы на Windows
Вообщем такая беда, решал задачку с одного сайта, решал ее в облаке от Cloud9, там Ubuntu стоит....

Принудительное завершение программы Console Windows x64
Добрый день господа! Возникла проблема в Console программе, работает программа в основном с...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru