Как сделать,чтобы моё приложение нельзя было убить? Или какие messages
ловить? (в Ctrl + Alt + Del его не видно, тут проблем нет) |
Можно попробовать перезапускать процесс при попытке закрыть приложение... Но это в зависимости от того, что именно хочеться увидеть в итоге...
|
WakeUp
Никак. Если захотят - все равно убьют. На некоторых NT-системах нельзя прибить CSRSS.EXE, но это так задумано на уровне ядра. При вызове TerminateProcess ловить сообщения бесполезно, их просто не будет. |
Цитата:
WM_CLOSE |
mar
Эти сообщения посылаются окну, и то не гарантировано. |
vasketsov
конечно, посылаются окну (и вопрос был - какие сообщения ловить) :) насчет - необязательно - это то есть как? :o именно что обязательно - так окошки устроены - на распределении и обработке сообщений. см. MSDN Когда мы хотитм закрыть окно - любым способом, то ему посылается сообщение WM_DESTROY Оно попадает в функцию окна и уже она, вызывает функцию PostQuitMessage(), которая помещает в очередь сообщений WM_QUIT Когда из очереди выбирается WM_QUIT, GetMessage (или ее заменитель :) ) возвращает FALSE и приложение должно завершить цикл обработки. т.е., если не хотеть закрываться, то в WndProc, или в том, что ее заменяет, надо обратить внимание на стандартное место Код:
case WM_DESTROY: |
mar
Это всё при нормальном завершении приложения. Я пробовал.:( P.S. забыл: всё это под Win9X. |
mar
В начале ссылки на WinCE, там-то как раз это не обязательно и в MSDN это даже написано. Цитата:
Гляди псевдокод. BOOL bClosed = FALSE; //глоб. перем. //оконная функция WndProc() { if (uMsg == WM_CLOSE) bClosed = TRUE; } while (GetMessage()) { тут цикл. if (bClosed) break; } И окно WM_DESTROY не получит. Кроме того, существуют особености неполучения этого сообщения при выходе из системы. |
vasketsov так я про wm_close писала, а в код, извини, не воткнула. Это же Microsoft ! у них, как в египетской мифологии: куча богов отвечает за одно и то же, а для жрецов еще и недокументированные возможности :)
WakeUp а что ты понимаешь под ненормальным завершением? мы же не будем настаивать на том, чтобы приложение продолжало работать с выключенным питанием :) |
mar
Ну например берёшь ZXView (я обычно им пользуюсь), он показывает все процессы (а не окна) и убиваешь любой процесс. Ведь в приложеннии может не быть окон. |
WakeUp
мы тут не вирус случайно пишем объединенными усилиями? системный процесс? посмотри, как его убивают + MSDN на то, что там, может, скомпонуешь, как не убивать. Если придумаешь, напиши, pls. Это может быть полезно и для благих целей :) Добавлено: да, самое главное - склероз :( TerminateProcess и вообще посмотри Рихтера (Windows для профессионалов) Про процессы. [s]Исправлено: mar, 1:28 24-01-2003[/s] |
WakeUp
посмотри здесь http://delphi.mastak.ru/cgi-bin/foru...850962&n=5!!!!! |
о перехвате API - функций, кстати, тоже написано у Рихтера
Поскольку у меня сейчас тоже проблема с перехватом API, я тут ковырялась в сети и нашла пример перехвата API для защиты от удаленного перезапуска компьютера: http://www.hackzone.ru/articles/ntadmin.html Кроме того, перехват API обсуждался и на этом форуме |
Спасибо всем за информацию.
Наверно остановлюсь на варианте с 2-3 процессами. Он проще всех других:) |
Время: 04:25. |
Время: 04:25.
© OSzone.net 2001-