![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
![]()
Всем доброго времени суток! Подскажите, пожалуйста, как лучше действовать в данной ситуации.
Есть консольное приложение, которое выполняет определенный счет в течении некоторого времени. Для визуализации результатов этого счета на каждом такте работы, к этому приложению может подключаться написанная на Builder программка-визуализатор. Обмен данными осуществляется через FileMappingObject. Так как головным является консольное приложение, то CreateFileMapping() и MapViewOfFile() реализованы в нем. По окончании работы консольного приложения, выполняется соответстветственно UnmapViewOfFile() и CloseHandle(). Но это в том случае, когда пользователь дождался окончания работы консольного приложения и не прервал его раньше с помощью, скажем, комбинации клавиш Ctrl+Alt+Del. В этом случае код, в котором расположены UnmapViewOfFile() и CloseHandle() не выполняется. Я так понимаю, что приложение завершается, а память из объекта FileMapping не освобождается. Как быть? Может отловить сообщение, которое посылается окну при нажатии Ctrl+Alt+Del, хотя, как это сделать я не понимаю пока, т.к. не представляю как увязать код последовательно выполняемого консольного приложения с такого рода сообщением. Что вообще происходит, когда при работе приложения нажимается комбинация Ctrl+Alt+Del? |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А нет возможности админнаказания за некорректно завершенный сеанс? Т.е. "парукам-палицу" надавать за посыл компа на три клавиши?
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
![]()
Homa_1983
Скорее всего, дело не в каких-либо комбинациях, а в том, что консольное приложение не обрабатывает сообщения windows на завершение работы. Если б отлавливало, то корректно бы завершало работу с файлмаппингом и т.д. |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]() Цитата:
Это специальный системный сигнал который может привести к перезагрузке системы. Те же проблемы у вас будут если вы просто выйдете из системы. Консольные приложения должны воспользоваться SetConsoleCtrlHandler() и отлавливать CTRL_C_EVENT событие. Ref: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx |
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
![]() |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
![]()
Спасибо всем.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |