Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как выполнить функцию при закрытии приложения на С++ / 13 сообщений из 13, страница 1 из 1
12.12.2013, 17:10
    #38498945
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
Есть проект в VS2010 на С++
Простое консольное приложение

Как можно назначить какую нить функцию на тот случай когда я сам закрываю это приложение крестиком в углу консольного окна ?
...
Рейтинг: 0 / 0
12.12.2013, 17:17
    #38498955
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
SetConsoleCtrlHandler()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.12.2013, 17:49
    #38499024
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
tromПростое консольное приложение
Как можно назначить какую нить функцию на тот случай когда я сам закрываю это приложение крестиком в углу консольного окна ?

Как бы консольное приложение не подразумевает вообще такую возможность.
Я к тому, что решение Дмитрия непереносимо.

Есть ещё atexit()
http://www.cplusplus.com/reference/cstdlib/atexit/

но он может запросто в этом случае не вызываться (можно проверить).
...
Рейтинг: 0 / 0
12.12.2013, 17:58
    #38499040
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
Dimitry Sibiryakov,

А можно пример использования для мой ситуации, что то не могу найти нормальный пример в гугл для SetConsoleCtrlHandler()
...
Рейтинг: 0 / 0
12.12.2013, 18:50
    #38499110
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
tromчто то не могу найти нормальный пример в гугл для SetConsoleCtrlHandler()

http://msdn.microsoft.com/en-us/library/windows/desktop/ms685049(v=vs.85).aspx
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.12.2013, 20:59
    #38499226
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
MasterZiv ,

atexit()
Вроде работает, но я вызвал всплывающее окно MessageBoxA() при закрытии консоли, но через несколько секунд консоль и всплывающее окно закрываются не дождавшись пока я нажму ОК
Я к тому что atexit() может не дождаться выполнения функции которую я буду вызвать при завершении ? у atexit() какой то лимит по времени ?

И еще если консоль зависнет и я завершу работу аварийно или вообще через диспетчер задач убью процесс, эта функция будет вызываться ?

Dimitry Sibiryakov
Как я понял идет какое то перечисление возможных событий и выполнение определенных функций для них, а где почитать что значат каждое событие ?
И вопрос если консоль закрывается аварийно или через диспетчер задач есть ли какое то событие которое может обработать эту ситуацию ?
...
Рейтинг: 0 / 0
12.12.2013, 21:22
    #38499248
Как выполнить функцию при закрытии приложения на С++
tromMasterZiv ,

atexit()
Вроде работает, но я вызвал всплывающее окно MessageBoxA() при закрытии консоли, но через несколько секунд консоль и всплывающее окно закрываются не дождавшись пока я нажму ОК
Я к тому что atexit() может не дождаться выполнения функции которую я буду вызвать при завершении ? у atexit() какой то лимит по времени ?

И еще если консоль зависнет и я завершу работу аварийно или вообще через диспетчер задач убью процесс, эта функция будет вызываться ?

Dimitry Sibiryakov
Как я понял идет какое то перечисление возможных событий и выполнение определенных функций для них, а где почитать что значат каждое событие ?
И вопрос если консоль закрывается аварийно или через диспетчер задач есть ли какое то событие которое может обработать эту ситуацию ?
MessageBoxA() - неблокирующая/асинхронная функция?
...
Рейтинг: 0 / 0
12.12.2013, 21:29
    #38499251
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
tromа где почитать что значат каждое событие ?
Ты что, самостоятельно ходить по ссылкам совсем не умеешь?..
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683242(v=vs.85).aspx
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.12.2013, 01:06
    #38499367
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
tromИ вопрос если консоль закрывается аварийно или через диспетчер задач есть ли какое то событие которое может обработать эту ситуацию ?
это конец, подумал Штирлиц, где же пистолет.

kill -9/terminateprocess не дают никаких шансов
...
Рейтинг: 0 / 0
13.12.2013, 03:59
    #38499414
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
tromИ еще если консоль зависнет и я завершу работу аварийно или вообще через диспетчер задач убью процесс, эта функция будет вызываться ?

И при отключении электропитания - тоже будет вызываться!
...
Рейтинг: 0 / 0
13.12.2013, 09:24
    #38499520
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
alex_ktromИ еще если консоль зависнет и я завершу работу аварийно или вообще через диспетчер задач убью процесс, эта функция будет вызываться ?

И при отключении электропитания - тоже будет вызываться!


это конечно же сарказм, шутка.
гарантий нет. ни в c, ни в каком то другом языке программирования.
Её вообще по жизни нет.
...
Рейтинг: 0 / 0
14.12.2013, 04:04
    #38500729
Dmitry V. Liseev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
Около 17 лет назад я в своём блоге писал о неубиваемой программе. Правда, не консольной, а оконной. Это было под новую крутую операционку Win 95. Также портировано под OS/2. Фишка в том, что система не делает сразу kill, а перед убийством программы вежливо посылает WM_QUIT. Тут моя программа создаёт дубликат процесса с общими страницами данных, а сама завершается. Перехват завершения программы работал надёжно.
...
Рейтинг: 0 / 0
14.12.2013, 13:39
    #38500819
trom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнить функцию при закрытии приложения на С++
Всем спасибо, решил мониторить запущенность приложения внешней прогой так надедежней
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как выполнить функцию при закрытии приложения на С++ / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]