Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Вниз

Какое сообщение получает прога, если ее снимают по Ctrl-Alt-Del   Найти похожие ветки 

 
Князев Сергей   (2003-12-04 08:59) [0]

Собственно сабж. Если ничего не получает, то как узнать, что прогу закрыли именно так.
Спасибо...


 
Рамиль   (2003-12-04 09:28) [1]

Насчет W9x точно не знаю, но в NT подобных системах, если завершить в закладке приложения, то это эквивалентно норамальному завершению программы. Если завершить через процессы то программа не получает никаких сообщений, а принудительно разрушается. Можно при запуске проги прописыать что нибудь в реестре, а при корректом завершении стирать, соотвю при запуске проверять на наличие этой записи.


 
Князев Сергей   (2003-12-04 13:58) [2]

Рамиль ©
Так не пойдет, мне нужно отловить, что прогу кто-то насилует.


 
Danilka   (2003-12-04 14:01) [3]

[2] Князев Сергей (04.12.03 13:58)
запрещай юзерам ее использование на вин2к, винХП и т.д.


 
Danilka   (2003-12-04 14:08) [4]

:)))))
самое модное местное решение: прячь ее от Ctrl-Alt-Del, лучше всего - в трей


 
PVOzerski   (2003-12-04 15:26) [5]

IMHO:
>запрещай юзерам ее использование на вин2к, винХП и т.д.
Это не решение. Во-первых, Microsoft сворачивает линейку w"9x (думаю, ME-это последняя версия и новых не будет). Во-вторых, а если за NT/W2K/XP деньги уплачены? В третьих, помимо "штатных", есть и "левые" утилиты для управления процессами. Мне как-то больше нравится предложение Рамиль © [1], только я бы писал в реестр (а лучше - в файл) информацию при запуске (процесс запущен) и при выходе (процесс корректно завершен).


 
Danilka   (2003-12-04 15:49) [6]

[5] PVOzerski © (04.12.03 15:26)
сорри, что в первом своем посте смайлик забыл поставить. :))

хорошо, тогда мое мнение, а нафига это нужно? я не могу себе представить, зачем юзеру лезть вырубать программу по Ctrl-Alt-Del кроме одной причины: нормального выхода из нее не предусмотрено. А значит, надо предусмотреть :))
вобщем, вопрос в рамках "юзабилити", в рамках удобства работы с программой.


 
Danilka   (2003-12-04 15:52) [7]


> только я бы писал в реестр (а лучше - в файл) информацию
> при запуске (процесс запущен) и при выходе (процесс корректно
> завершен).


запускаю 1 копию программы, запускаю 2 копию программы. первую вырубаю по Ctrl-Alt-Del, вторую - по человечьи. еще раз ее запускаю - они нифига не знает о том, что была завершена некорректно.
вобщем, думаю, при желании из любого способа выкрцутиться можно будет. :))


 
PVOzerski   (2003-12-04 15:53) [8]

>запускаю 1 копию программы, запускаю 2 копию программы. первую >вырубаю по Ctrl-Alt-Del, вторую - по человечьи. еще раз ее >запускаю - они нифига не знает о том, что была завершена >некорректно.
Можно, например, еще хэндл окошка запоминать или число запущенных копий считать...


 
Danilka   (2003-12-04 15:57) [9]

[8] PVOzerski © (04.12.03 15:53)
можно.
тогда еще проще - запускаю программу, вырубаю по Ctrl-Alt-Del, лезу в реестр и чищу его, запускаю снова - все ок. :))


 
Князев Сергей   (2003-12-04 17:02) [10]


> запускаю 1 копию программы, запускаю 2 копию программы.
> первую вырубаю по Ctrl-Alt-Del, вторую - по человечьи. еще
> раз ее запускаю - они нифига не знает о том, что была завершена
> некорректно.

Вторую копию запустить нельзя, это уже сделано. Программу именно можно закрыть нормально, можно с выключением Винды, все уже предусмотрено, но вот такая внештатная ситуация как Ctrl-Alt-Del как бы еще исключить. Прописывать в реестре или в файле нето, потому как это не выход из той задачи, которую прога решает. Что именно она решает объяснять не вижу надобности. Просто мне нужен конкретный вариант по сабжу.
Спасибо.


 
panov   (2003-12-04 18:13) [11]

>Князев Сергей (04.12.03 17:02) [10]

Так ответ уже дали.

1. Реестр.
2. Файл на диске.

Какие еще могут быть проблемы?


 
Игорь Шевченко   (2003-12-04 18:16) [12]


> Прописывать в реестре или в файле нето, потому как это не
> выход из той задачи, которую прога решает. Что именно она
> решает объяснять не вижу надобности


Программа по Ctrl+Alt+Del не снимается. По Ctrl+Alt+Del выводится Task Manager. Если Task Manager закрывает программу в списке приложений в NT-системах, то программе посылается WM_CLOSE. Если Task Manager снимает программу из списка процессов или снятие происходит в Win9x программа не получает никаких уведомлений.


 
panov   (2003-12-04 18:20) [13]

Если убивают с вкладки "приложения", то программа спокойно может обработать такую ситуацию в OnCloseQuery.


 
willys   (2003-12-04 18:34) [14]

Игорь Шевченко © (04.12.03 18:16) [12]
в Win9x программе посылается WM_CLOSE. если же программа не реагирует на сообщения в течении 20 секунд или более (весёлая надпись not responding), тогда она сбивается TerminateProcess"ом.


 
Князев Сергей   (2003-12-05 08:29) [15]


> Если Task Manager закрывает программу в списке приложений
> в NT-системах...

Вот именно, что прогу могут снимать не только в НТ системах, а надо универсальное решение.

В общем спасибо за ответы. Приму пожалуй за вариант решения намек Игорь Шевченко ©. Буду отлавливать запуск Task Manager. Кстати по-моему это универсальное решение, т.е. насилие над прогой губить в самом зародыше при появлении насильника.

Спасибо еще раз всем.


 
Anatoly Podgoretsky   (2003-12-05 09:02) [16]

Универсального решения нет, кроме того это привилегия пользователя абортировать программы, особенно завишшии.
Если надо фиксировать случаи принудительного снятия, то надо вести лог, где должна фигурировать следующая информация, время запуска, время последней жизнидеятельность (обновлять раз в минуту), время нормального выхода. При старте анализировать, анормальное выключение фиксировать в отдельном логе. Это для случая работы в единственном экземляре, в случае множественных копий, немного усложняется.


 
Рамиль   (2003-12-05 09:33) [17]

Извиняюсь за офтопик, но я бы на месте пользователя убил бы программиста, который ради своей программы не дает запустить диспетчер задач.


 
Князев Сергей   (2003-12-05 09:41) [18]


> Извиняюсь за офтопик, но я бы на месте пользователя убил
> бы программиста, который ради своей программы не дает запустить
> диспетчер задач.

Диспетчер программ пускай запускает сколько ему влезет и снимает от туда все чего хочет. Но моя прога должна фиксировать, что ее возможно пытаются снять. Прога выполняет определенные действия, пока работает, а как только хотят ее снять, то она должна успеть запретить кое-что сделать с определенным объектом в ее отсутствие. Вот.


 
Рамиль   (2003-12-05 09:50) [19]

Ну не успеет она физически ничего сделать если снять через процессы. Есть замудренный вариант. Написать сервис который будет отслеживать завершение процесса программы и запустить его под учетной записью system, тогда пользователь не сможет снять его.


 
Князев Сергей   (2003-12-05 09:59) [20]


> Ну не успеет она физически ничего сделать если снять через
> процессы. Есть замудренный вариант. Написать сервис который
> будет отслеживать завершение процесса программы и запустить
> его под учетной записью system, тогда пользователь не сможет
> снять его.

Хороший вариант надо подумать. А вот на счет того, успеет или нет, это зря. Как только запустится Task Manager она успеет кое-что сделать например нолик поменять на единичку. Это в том случае, если пользователь очень быстрый и у него мышка уже находится на позиции, где появится процесс моей проги на экране в окне Task Manager"a, к тому же быстро нажать на кнопку завершения, а потом еще и на кнопку в окне подстверждения. Секунд 5 в лучшем случае пройдет, а за 5 секунд можно и диск даже попортить наглухо.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.009 c
1-52225
Dimaxx
2003-12-03 01:46
2003.12.16
Область памяти для двух приложений


1-52145
nonme
2003-12-03 21:54
2003.12.16
поиск в memo


1-52240
Aleksandr
2003-12-04 12:20
2003.12.16
Все время ошибка System Error. Code 1400. Недопустимый дескриптор


1-52228
soup
2003-12-04 16:20
2003.12.16
Аналог MouseOn / MouseOver в Дельфи


9-52046
mrk
2003-06-01 00:03
2003.12.16
Плагин для d3max - экспорт в md2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский