0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 5
|
|
1 | |
Завершение программы при выходе из Windows (перезагрузка, выключение)13.10.2012, 15:40. Показов 2321. Ответов 4
Метки нет (Все метки)
Всем привет. Искал-искал - не нашёл ничего. Может, плохо искал...
Проблема такая. При выходе из программы стоит стандартный FormCloseQuery с запросом типа "Вы уверены"? Но при перезагрузке или выключении компьютера, нужно обойти этот запрос, чтобы Windows не спотыкался об программу. Как это сделать? Как различить, идёт закрытие сессии Windows-a или просто закрывается программа? Отслеживание SystemEvents.PowerModeChanged и SystemEvents.Session* - не предлагать. На VB есть параметр FormClosingEventArgs, который позволяет сделать проверку, а как это реализовать на BCB?
0
|
13.10.2012, 15:40 | |
Ответы с готовыми решениями:
4
Выключение и перезагрузка Windows XP Как сделать корректное завершение программы при выключении Windows? Выключение и перезагрузка ПК при загрузке игры Перезагрузка компьютера при выходе из игры |
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 |
Спасибо. Про "WM_QUERYENDSESSION" я знаю, описано в MSDN на "SystemEvents.SessionEnding" (http://msdn.microsoft.com/ru-r... nding.aspx).
Вопрос, действительно, обсуждался, и даже несколько раз, но сколько ни искал, всё крутится вокруг "WM_QUERYENDSESSION" и "SystemEvents.SessionEnding". А сам Borland ничего не предлагает по этому вопросу? Может, какие-то другие, нестандартные подходы?
0
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
||||||
13.10.2012, 22:34 | 5 | |||||
Это самый нормальный метод, ибо если и есть какие-то штатные средства на эту тему, то они все равно будет делать тоже самое. Хотя на мой взгляд быстрее 2 строчки в Dispatch прописать.
Я уже написал, что если выход происходит через ОС, то событие OnClose формы не будет происходить. Перенесите действие из OnCloseQuery туда и все. Единственное изменение, которое потерпит Ваш код к этом случае это:
Но сразу предупреждаю, народная медицина сегодня работает - а завтра нет.
0
|
13.10.2012, 22:34 | |
13.10.2012, 22:34 | |
Помогаю со студенческими работами здесь
5
При входе в винду и при выходе "завершение работы виндовс" комп подвисает В Windows произошел сбой требуется перезагрузка компа.У вас есть минута для сохранения данных (при работе моей программы) Неожиданное завершение программы на Windows Принудительное завершение программы Console Windows x64 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |