Опять про Ctrl-Alt-Del...
От: Mith  
Дата: 22.10.02 08:29
Оценка:
Ребята, не в курсе шлёт ли OC какое-нить сообщение программе, перед тем как её аварийно закрыть, т.е. пользователь завершает задачу в "Диспетчере программ"?
Спасибо.
Re: Опять про Ctrl-Alt-Del...
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 22.10.02 08:37
Оценка: 2 (1)
Здравствуйте Mith, Вы писали:

M> Ребята, не в курсе шлёт ли OC какое-нить сообщение программе, перед тем как её аварийно закрыть, т.е. пользователь завершает задачу в "Диспетчере программ"?

M> Спасибо.

Сначала ОС пытается закрыть программу "по хорошему", то есть шлет ей WM_CLOSE. Ну а потом уже и
Re[2]: Опять про Ctrl-Alt-Del...
От: Алекс Россия http://wise-orm.com
Дата: 22.10.02 08:53
Оценка:
Здравствуйте Flamer, Вы писали:

F>Здравствуйте Mith, Вы писали:


M>> Ребята, не в курсе шлёт ли OC какое-нить сообщение программе, перед тем как её аварийно закрыть, т.е. пользователь завершает задачу в "Диспетчере программ"?

M>> Спасибо.

F>Сначала ОС пытается закрыть программу "по хорошему", то есть шлет ей WM_CLOSE. Ну а потом уже и


Ты хочешь сказать, что когда мы выбираем EndTask процессу посылается сообщение WM_CLOSE? Сообщения могут посылаться только окнам или потокам. Всем потокам посылать WM_CLOSE точно никто не будет, а если процесс не имеет ни одного окна — тогда что?

Я думаю, TM без всяких предупреждений просто вызывает TerminateProcess и все.
Re[3]: Опять про Ctrl-Alt-Del...
От: Аноним  
Дата: 22.10.02 09:01
Оценка:
Здравствуйте Алекс, Вы писали:

А>Я думаю, TM без всяких предупреждений просто вызывает TerminateProcess и все.


Нет, сначала он пытается определить основное окно, и посылает ему WM_CLOSE, а вот уж если приложение не реагирует...
Re[4]: Опять про Ctrl-Alt-Del...
От: Алекс Россия http://wise-orm.com
Дата: 22.10.02 09:03
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Алекс, Вы писали:


А>>Я думаю, TM без всяких предупреждений просто вызывает TerminateProcess и все.


А>Нет, сначала он пытается определить основное окно, и посылает ему WM_CLOSE, а вот уж если приложение не реагирует...


Откуда такая уверенность?
Re[4]: Опять про Ctrl-Alt-Del...
От: sasha Грузия  
Дата: 22.10.02 09:22
Оценка:
Здравствуйте Аноним, Вы писали:

А>Нет, сначала он пытается определить основное окно, и посылает ему WM_CLOSE, а вот уж если приложение не реагирует...


А может сначала стоило бы попытаться проверить это, а потом утверждать?
Хотя бы с помощью того же Spy++?

Вот отрывок из книги
Inside Microsoft Windows 2000 / David A. Solomon, Mark Russinovich.

... on systems without Terminal Services, Task Manager uses the TerminateProcess 
function to end processes. However, when you direct Task Manager to end a process
 on a system running in a Terminal Services environment, Task Manager calls on 
Termsrv.exe, the terminal services service, to perform the process termination. 
Because Termsrv.exe is a service process running in the System account, it has the 
debug privilege, which it uses to open a process it's terminating without regard to 
the process's token or process security settings.


Так что думайте сами, решайте сами...
Re[4]: Опять про Ctrl-Alt-Del...
От: Andrew S Россия http://alchemy-lab.com
Дата: 22.10.02 12:37
Оценка: 2 (1)
А если окна нет, то.... MSDN:

Console processes receive a separate notification message, CTRL_SHUTDOWN_EVENT or CTRL_LOGOFF_EVENT, as the situation warrants. A console process routes these messages to its HandlerRoutine function.

...

The system generates CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT signals when the user closes the console, logs off, or shuts down the system so that the process has an opportunity to clean up before termination.

А обработчик устанавливается функцией SetConsoleCtrlHandler.
Так что все, по видимому, в наших руках.


А>Нет, сначала он пытается определить основное окно, и посылает ему WM_CLOSE, а вот уж если приложение не реагирует...
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[5]: Опять про Ctrl-Alt-Del...
От: Алекс Россия http://wise-orm.com
Дата: 22.10.02 12:47
Оценка:
Здравствуйте Andrew S, Вы писали:

[]

Ну и чего? Где написано, что TM сначала посылает CTRL_CLOSE_EVENT консольным приложениям и только потом их убивает?
Re[6]: Опять про Ctrl-Alt-Del...
От: Mith  
Дата: 22.10.02 13:02
Оценка:
Да, ладно, будет Вам спорить!
Консольные приложения ещё какие-то... На то он и windows, что бы работать с окнами. Я ещё не попробовал, но начну с самого простого — WM_CLOSE, а потом уж как получиться.
Re[6]: Опять про Ctrl-Alt-Del...
От: Andrew S Россия http://alchemy-lab.com
Дата: 22.10.02 13:06
Оценка:
А где написано, что нет? Надо пробовать
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[6]: Опять про Ctrl-Alt-Del...
От: Andrew S Россия http://alchemy-lab.com
Дата: 22.10.02 22:23
Оценка:
А при чем здесь Task Manager? Он пользуется виндовыми функциями, пусть и native. Так что нотификации посылает виндовс. В MSDN про это прямо и сказано — почитайте. Кстати, я проверил таки в коде — посылает... так что этот метод для консольного приложения правильнее, нежели организация очереди сообщений (sic!).
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re: Опять про Ctrl-Alt-Del...
От: Hacker_Delphi Россия  
Дата: 23.10.02 06:36
Оценка:
Здравствуйте Mith, Вы писали:

M> Ребята, не в курсе шлёт ли OC какое-нить сообщение программе, перед тем как её аварийно закрыть, т.е. пользователь завершает задачу в "Диспетчере программ"?

M> Спасибо.
Если завершается задача — ей шлют WM_CLOSE, а если она все не хочет завершиться — ее пристреливают
Если же завершается процесс — ему ничего не шлют, а просто говорятЪ TerminateProcess (по крайней мере ето так выглядит + иначе невозможно убить зависший процесс а процессы валятся все, кроме тех, которые сервисы
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[5]: Опять про Ctrl-Alt-Del...
От: Snax Россия  
Дата: 29.10.02 02:12
Оценка:
Здравствуйте Andrew S, Вы писали:

AS>[i]Console processes receive a separate notification message, CTRL_SHUTDOWN_EVENT or CTRL_LOGOFF_EVENT, as the situation warrants.


Маленькое дополнение. Напомню, что под определение "операционная система" не подходят Win9x/Me.
Так что там никаких CTRL_SHUTDOWN_EVENT/CTRL_LOGOFF_EVENT не предусмотрено.

см Q130717 http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q130717&

Павел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.