Форум: "Начинающим";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
ВнизКонсольное приложение Найти похожие ветки
← →
Deltas © (2009-05-29 18:06) [0]Всем привет. Как запретить закрытие консольного окна по нажатию на кнопке "Закрыть"? SetConsoleCtrlHandler не предлагать, Windows XP закрывает консольное окно вместе с процессом через 5 секунд после нажатия, если процесс не завершился в течение этого времени.
← →
DVM © (2009-05-29 18:14) [1]Сделать свою иммитацию консольного окна? Где то тут пробегало нечто подобное.
← →
Юрий Зотов © (2009-05-29 18:35) [2]Возможно, Get/SetWindowLong?
В смысле - найти хэндл окна своей консоли и подменить его оконную функцию своей, а там ловить WM_SYSCOMMAND.
← →
Плохиш © (2009-05-29 18:50) [3]
> Как запретить закрытие консольного окна по нажатию на кнопке
> "Закрыть"?
Если я нажал на кнопку "Закрыть", то приложение должно закрыться. В противном случае оно летит мимо корзины и работа считается не выполненной.
← →
Юрий Зотов © (2009-05-29 19:02) [4]> Плохиш © (29.05.09 18:50) [3]
Да, но, возможно, не сразу. Существуют программы, которые нельзя прерывать, где попало. И даже через 5 секунд.
> Deltas © (29.05.09 18:06)
Кстати, насколько помню, SetConsoleCtrlHandler позволяет перехватить Ctrl+C, а не закрытие окна. Если это так, то SetConsoleCtrlHandler тоже нужно, а не только перехват "крестика".
← →
Deltas © (2009-05-29 19:13) [5]
> Юрий Зотов © (29.05.09 18:35) [2]
К сожалению не работает. При попытке подменить оконную функцию SetWindowLong завершается с ошибкой. GetLastError возвращает код ошибки 5 (ERROR_ACCESS_DENIED).
> Юрий Зотов © (29.05.09 19:02) [4]
> Кстати, насколько помню, SetConsoleCtrlHandler позволяет
> перехватить Ctrl+C, а не закрытие окна.
Да, SetConsoleCtrlHandler позволяет обрабатывать 5 событий: Ctrl + C, Ctrl + Break, нажатие кнопки "Закрыть", выход пользователя из системы, завершение работы Windows. Эту функцию Win API я использую для корректной обработки Ctrl + C, она тоже нужна, но для обработки закрытия окна не подходит.
← →
Игорь Шевченко © (2009-05-29 19:44) [6]
> К сожалению не работает. При попытке подменить оконную функцию
> SetWindowLong завершается с ошибкой. GetLastError возвращает
> код ошибки 5 (ERROR_ACCESS_DENIED).
csrss не любит, когда в его окнах что-то пытаются подменить.
← →
Deltas © (2009-06-05 19:12) [7]Ну хорошо, а любые другие варианты? Можно ли в собственном процессе запретить доступ PROCESS_TERMINATE и тем самым не дать системе через 5 секунд его терминировать?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c