Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.02;
Скачать: CL | DM;

Вниз

Консольное приложение   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
8-1196019724
Step
2007-11-25 22:42
2009.08.02
ASF


15-1243538109
Саша
2009-05-28 23:15
2009.08.02
Ошибка инициализации приложения


15-1243923034
alert2009
2009-06-02 10:10
2009.08.02
Подскажите программу...


15-1243231535
Юрий Зотов
2009-05-25 10:05
2009.08.02
Группировка в XSL


15-1243369805
Юрий
2009-05-27 00:30
2009.08.02
С днем рождения ! 27 мая 2009 среда