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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2014, 16:10   #1
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию прерывание работы консольного приложения по Ctrl+Alt+Del

Всем доброго времени суток! Подскажите, пожалуйста, как лучше действовать в данной ситуации.

Есть консольное приложение, которое выполняет определенный счет в течении некоторого времени. Для визуализации результатов этого счета на каждом такте работы, к этому приложению может подключаться написанная на Builder программка-визуализатор. Обмен данными осуществляется через FileMappingObject. Так как головным является консольное приложение, то CreateFileMapping() и MapViewOfFile() реализованы в нем. По окончании работы консольного приложения, выполняется соответстветственно UnmapViewOfFile() и CloseHandle(). Но это в том случае, когда пользователь дождался окончания работы консольного приложения и не прервал его раньше с помощью, скажем, комбинации клавиш Ctrl+Alt+Del. В этом случае код, в котором расположены UnmapViewOfFile() и CloseHandle() не выполняется. Я так понимаю, что приложение завершается, а память из объекта FileMapping не освобождается.
Как быть? Может отловить сообщение, которое посылается окну при нажатии Ctrl+Alt+Del, хотя, как это сделать я не понимаю пока, т.к. не представляю как увязать код последовательно выполняемого консольного приложения с такого рода сообщением. Что вообще происходит, когда при работе приложения нажимается комбинация Ctrl+Alt+Del?
Homa_1983 вне форума Ответить с цитированием
Старый 30.10.2014, 16:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А нет возможности админнаказания за некорректно завершенный сеанс? Т.е. "парукам-палицу" надавать за посыл компа на три клавиши?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2014, 15:12   #3
FataLL
Форумчанин
 
Аватар для FataLL
 
Регистрация: 29.01.2013
Сообщений: 319
По умолчанию

Homa_1983
Скорее всего, дело не в каких-либо комбинациях, а в том, что консольное приложение не обрабатывает сообщения windows на завершение работы. Если б отлавливало, то корректно бы завершало работу с файлмаппингом и т.д.
FataLL вне форума Ответить с цитированием
Старый 31.10.2014, 18:16   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Homa_1983 Посмотреть сообщение
Что вообще происходит, когда при работе приложения нажимается комбинация Ctrl+Alt+Del?
С точки зрения приложения - ничего.
Это специальный системный сигнал который может привести к перезагрузке системы. Те же проблемы у вас будут если вы просто выйдете из системы.
Консольные приложения должны воспользоваться SetConsoleCtrlHandler() и отлавливать CTRL_C_EVENT событие.

Ref:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
waleri вне форума Ответить с цитированием
Старый 05.11.2014, 10:34   #5
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А нет возможности админнаказания за некорректно завершенный сеанс? Т.е. "парукам-палицу" надавать за посыл компа на три клавиши?
К сожалению нет
Homa_1983 вне форума Ответить с цитированием
Старый 05.11.2014, 23:35   #6
Homa_1983
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 29
По умолчанию

Спасибо всем.
Homa_1983 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows ctrl-alt-del Ubuntu alt-sysrq-i veter_s_morya Свободное общение 8 13.08.2010 16:16
Как сделать так, что бы приложение не реагировало на Alt+Tab, Windows и Ctrl+Alt+Del? st6al Помощь студентам 0 27.12.2009 19:48
CTRL+ALT+DEL foxes Общие вопросы Delphi 8 06.07.2009 12:46
не получается отключение CTRL+alt+del? Alt+TAb, часов с панели задач и Крестик окна Reds Общие вопросы Delphi 1 30.09.2008 10:37