Форум » [x]Harbour » Закрытие приложения в Harbour » Ответить

Закрытие приложения в Harbour

Pasha: Как в Harbour перехватить сообщение о выключении/перезагрузке системы с закрытием приложения ? Естественно, нужно платформеннонезависимое решение, и для консоли, и для gui

Ответов - 2

alkresin: Не думаю, что существует такое готовое решение. Надо писать для каждого случая отдельно. В Windows GUI, где есть главное окно и, соответственно, обработка очереди сообщений - ловить WM_QUIT. В консоли - поместить в idle PeekMessage(), заточенный для того же WM_QUIT. В Линуксе своя система обработки сигналов ...

santy: Под виндовс Нужно обработать сообщение WM_QUERYENDSESSION WM_QUERYENDSESSION. Сообщение уведомляет приложение о том, что сеанс работы Windows будет завершен. В ответ приложение может вернуть FALSE, чтобы предотвратить закрытие Windows. После обработки WM_QUERYENDSESSION Windows посылает всем приложениям сообщение WM_ENDSESSION с результатами обработки сообщения WM_QUERYENDSESSION. WM_ENDSESSION. Сообщение посылается всем приложениям после обработки сообщения WM_QUERYENDSESSION. Оно уведомляет приложения, что Windows будет закрыта или что процесс закрытия был прерван. Если закрытие состоится, то оно мо- жет произойти в любой момент после того, как сообщение WM_ENDSESSION будет об- работано всеми приложениями. Поэтому важно, чтобы приложения завершали все свои действия для обеспечения безопасного завершения работы. приблизительный пример: http://www.neowin.net/forum/topic/636545-not-caught-wm-queryendsession-and-wm-endsession/ на RSDN есть интересная статья об использовании Winlogon notification package http://www.rsdn.ru/article/baseserv/winlogon.xml



полная версия страницы