Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2011, 23:13   #1
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию Как вернуть старое разрешение экрана при критическом завершении программы?

Привет. Не знаю, как назвать правильно "критическое" завершение работы; я имею ввиду ту ситуацию, когда не выполняется ни FormClose, ни FormDestroy (в котором прописан вызов процедуры смены разрешения), то есть программа закрыта либо через диспетчер задач, либо в Delphi через Ctrl+F2, либо другим похожим методом. Сам код смены разрешения написан, в нём не нуждаюсь.

Цитата:
Потом при исключении устанавливайте их.
Обработка исключений... Хорошая мысль. Спасибо.

Последний раз редактировалось Asker13; 10.05.2011 в 23:26.
Asker13 вне форума Ответить с цитированием
Старый 10.05.2011, 23:18   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Destroy выполняется в любом случае. Кроме случая Exception.

При terminate не выполняется только 2 события это OnCanClose и OnClose.

КАк вариант. Получайте и записывайте разрешения в переменые. Потом при исключении устанавливайте их.

Как вариант есть такая штука как MadExcept кроме средства отлова исключений у него есть куча разных фич облегчающих жизнь.
Далее там-же есть MadExceptHandler который выполнит действие в момент исключения. Все доки и сам сабж есть на http://madshi.net
Человек_Борща вне форума Ответить с цитированием
Старый 11.05.2011, 00:18   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

не знаю как на практике и осуществимо ли,
но доумаю виндовс посылает сообщение окну для закрытия,
вот в прием сообщения и надо вставлять код (WinAPI)
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 11.05.2011, 19:25   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Так если при вызове ChangeDisplaySettings стоит флаг CDS_FULLSCREEN, разрешение должно само обратно меняться, даже если прога вылетает. А если CDS_FULLSCREEN не стоит, то это нехорошо, тогда при уменьшении разрешения значки на рабочем столе съедут и всё такое.
Somebody вне форума Ответить с цитированием
Старый 11.05.2011, 20:05   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Всегда есть и будут ситуации, при которых ваша программа вылетает. И нет никакой возможности выполнять при этом ваш код. Смиритесь с этим.

Вы можете попросить кого-то выполнять за вами очистку. Например, систему - как это указал Somebody.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выполнение js кода при завершении программы на delphi xamel87 Общие вопросы Delphi 1 08.05.2011 18:45
Как изменить разрешение экрана lionman Общие вопросы Delphi 7 07.01.2011 12:45
Разрешение экрана. MeTeOpA Общие вопросы Delphi 4 15.10.2010 03:33
Ошибка при завершении программы _-Re@l-_ Общие вопросы Delphi 2 01.09.2010 21:32
как узнать разрешение экрана пользователя? Juffin Общие вопросы Delphi 2 01.11.2009 21:10