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

Вниз

Отловить выключение компьютера   Найти похожие ветки 

 
Steep ©   (2007-12-12 12:49) [0]

Как отловить выключение компььютера и не дать ему выключится - если например на форме кликнута галочка?


 
Сергей М. ©   (2007-12-12 12:51) [1]

The WM_QUERYENDSESSION message is sent when the user chooses to end the Windows session or when an application calls the ExitWindows function. If any application returns zero, the Windows session is not ended. Windows stops sending WM_QUERYENDSESSION messages as soon as one application returns zero


 
Anatoly Podgoretsky ©   (2007-12-12 12:51) [2]

> Steep  (12.12.2007 12:49:00)  [0]

Диверсант?


 
_Denis_ ©   (2007-12-12 13:00) [3]

не дать выключиться... А если надо? Если я(пользователь, юзверь!) хочу выключить?! А оно не вырубается и всё... А про галочку я ту забыл давно уже : кто читает, чего там напсано :))


 
Anatoly Podgoretsky ©   (2007-12-12 13:03) [4]

> _Denis_  (12.12.2007 13:00:03)  [3]

Смотри глыбже, UPS+база+пропадания питания
Прощайте данные.
Готовимся преждевременно покупать аккумуляторы.


 
clickmaker ©   (2007-12-12 13:14) [5]


> [4] Anatoly Podgoretsky ©   (12.12.07 13:03)

Кстати, я сталкивался с ситуацией, когда база master на MS SQL накрывалась даже, если UPS нормально выключал комп.


 
Steep ©   (2007-12-12 13:14) [6]

Ну как всегда как спросиш сразу чуют диверсанта....

вобщем вот так делаю
{--------------------------------------------------------------}

{ Создаем процедуру обработки сообщения WM_QUERYENDSESSION. }

{ Приложение получит только это сообщение при попытке Windows }

{ завершить работу }

{--------------------------------------------------------------}



procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);

begin

inherited; { сначала сообщание должен обработать наследуемый метод }

{--------------------------------------------------------------------}

{ в этой точке вы также можете сообщить Windows о неготовности }

{ приложения завершить работу... }

Message.Result:=0;
showmessage("Завершение работы");
end;

комп не выключается но и мессагу не выводит :(


> Anatoly Podgoretsky ©

всяко!

> _Denis_ ©

на кнопочку выключит - если на своем компе :)

вобщем зада стоит такая - программа висит в трее и ловит наличия одного файла - если он есть - то не выключаемся (даже при выключении) - как только удалили - пусть сам перезагружается!


 
_Denis_ ©   (2007-12-12 13:27) [7]


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

Не вижу смысла. Откуда берётся этот файл?


 
Anatoly Podgoretsky ©   (2007-12-12 13:27) [8]

Знаешь когда программа не позволяет выключиться, то очень помогает кнопочка Power или Reset


 
_Denis_ ©   (2007-12-12 13:28) [9]


> Знаешь когда программа не позволяет выключиться, то очень
> помогает кнопочка Power или Reset

Или питание из розетки выдернуть :-D


 
Steep ©   (2007-12-12 13:30) [10]


> _Denis_ ©

Это для безопасности сервера

> Anatoly Podgoretsky ©   (12.12.07 13:27) [8]
> Знаешь когда программа не позволяет выключиться, то очень
> помогает кнопочка Power или Reset

знаю физически туда не проберутся

а права админа нужны для одной программы

вобщем не суть важна - нужно узнать как сделать это....


 
_Denis_ ©   (2007-12-12 13:34) [11]


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

А что мешает клавиатуру с мышью тоже спрятать:)


 
Steep ©   (2007-12-12 13:36) [12]


> _Denis_ ©

хватить уже офтопить вроде вполне нормальный вопрос
я просто не знаю - вроде же как вы сказали использую
WM_QUERYENDSESSION
но вот мессагу не выдает (код в 5)


 
Anatoly Podgoretsky ©   (2007-12-12 13:37) [13]

> Steep  (12.12.2007 13:30:10)  [10]

Плохо знаешь, если надо, то зайдут в щитовую.
Не той дорогой идете товарищи.


 
Anatoly Podgoretsky ©   (2007-12-12 13:38) [14]

> _Denis_  (12.12.2007 13:34:11)  [11]

Не поможет, тут руки надо отрубить и лучше программисту, а не пользователю.


 
Steep ©   (2007-12-12 13:45) [15]


> Anatoly Podgoretsky ©

а какой дорогой нужно - вы хоть подскажите...


 
Anatoly Podgoretsky ©   (2007-12-12 13:47) [16]

> Steep  (12.12.2007 13:45:15)  [15]

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


 
Steep ©   (2007-12-12 13:53) [17]

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


 
Сергей М. ©   (2007-12-12 13:55) [18]


> Steep ©   (12.12.07 13:36) [12]


> WM_QUERYENDSESSION
> но вот мессагу не выдает


И не выдаст.
Сообщение, если оно имело место быть, уже выбрано и обработано объектом Application.


 
Steep ©   (2007-12-12 14:02) [19]


> Сергей М. ©

а где можно побдробнее об этом почитать - желательно на русском?


 
Сергей М. ©   (2007-12-12 14:09) [20]

Зачем тебе все это ?

Обрабатывай событие OnCloseQuery главной формы приложения.

Если в этот момент команда закругляться по ряду причин не может быть исполнена твоим приложением, возвращай CanClose = False

Всех делов.


 
Anatoly Podgoretsky ©   (2007-12-12 14:17) [21]

> Steep  (12.12.2007 13:53:17)  [17]

Так ты не первый, кто с такой дикой идеей приходит сюда.
Нам даже мозг не надо морщить, все давно уже разобрано.


 
Steep ©   (2007-12-12 14:53) [22]


> Сергей М. ©

Я так делал - но так закрывается много приложении прежде чем доходит до текущей проги...
Решил исправить...

> Anatoly Podgoretsky ©  

Где разработано? - я наверняка плохо искал - но я не нашел..


 
Сергей М. ©   (2007-12-12 15:04) [23]


> так закрывается много приложении прежде чем доходит до текущей
> проги


А тебе до них есть дело ?

Вопрос твой стоял конкретно - как обнаружить стартовавший просесс "выключения".


 
Steep ©   (2007-12-12 15:13) [24]


> А тебе до них есть дело ?

к сожалению есть...


 
DiamondShark ©   (2007-12-12 15:16) [25]


> Steep ©   (12.12.07 15:13) [24]
>
> > А тебе до них есть дело ?
>
> к сожалению есть...

К сожаленью, очерёдность, в которой приложения получат WM_QUERYENDSESSION, не известен даже билгейцу.

Так что с двойным сожалением следует констатировать необходимость пересмотра ТЗ.


 
Anatoly Podgoretsky ©   (2007-12-12 15:16) [26]


> разработано

Где ты нашел такое слово в моем сообщение, видишь справа кнопочку <Цитата> пользуйся ее.


 
Сергей М. ©   (2007-12-12 15:16) [27]


> Steep ©   (12.12.07 15:13) [24]


Если


> Это для безопасности сервера


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


 
Anatoly Podgoretsky ©   (2007-12-12 15:17) [28]


> Так что с двойным сожалением следует констатировать необходимость
> пересмотра ТЗ.

Это да, иначе администратор пересмотрит свое одношение к этому чуду.


 
Steep ©   (2007-12-12 15:25) [29]


> > разработаноГде ты нашел такое слово в моем сообщение,
> видишь справа кнопочку <Цитата> пользуйся ее.

здесь


>[21]
> все давно уже разобрано.

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

Ну конечно можно - но я хочу для тренировки мозгов- ведь не раз может пригодится


 
DiamondShark ©   (2007-12-12 15:33) [30]


> ведь не раз может пригодится

Так оно не для того предназначено.

WM_QUERYENDSESSION предназначено для того, чтобы дать твоему приложению "последний шанс".
А вовсе не для управления временем жизни системы и других приложений.


 
Anatoly Podgoretsky ©   (2007-12-12 15:39) [31]

> Steep  (12.12.2007 15:25:29)  [29]

Сравни

разобрано
разработано


 
Steep ©   (2007-12-12 15:56) [32]


> WM_QUERYENDSESSION предназначено для того, чтобы дать твоему
> приложению "последний шанс".А вовсе не для управления временем
> жизни системы и других приложений.

хм..
ну для завершения работы наверняка же вызывают какуюто команду - ведь можно ее отловить и дать ей свершиться?


 
Сергей М. ©   (2007-12-12 16:30) [33]


> ля завершения работы наверняка же вызывают какуюто команду


В частном случае - да.
Прикладные задачи вольны вызвать функцию ExitWindows()
Тебя именно эти вызовы интересуют ?


 
oldman ©   (2007-12-12 16:36) [34]


> Steep ©   (12.12.07 12:49)  
> Как отловить выключение компььютера и не дать ему выключится


А компютер сам по себе выключается?
Может лучше юзера выпороть для профилактики?


 
Steep ©   (2007-12-13 07:49) [35]


> А компютер сам по себе выключается?Может лучше юзера выпороть
> для профилактики?

Ну все эти методы понятны

> В частном случае - да.Прикладные задачи вольны вызвать функцию
> ExitWindows()Тебя именно эти вызовы интересуют ?

так значит нужно отловить эту команду - и не дать другим ее поймать?
А не в частном?



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

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

Наверх





Память: 0.53 MB
Время: 0.008 c
2-1197374227
deras
2007-12-11 14:57
2008.01.13
Какое условие прописать в BeforPost?


15-1197027836
@!!ex
2007-12-07 14:43
2008.01.13
Как сделать чтобы ALT+Ctrl+Del переводил в режим выбора действия?


15-1196839941
data
2007-12-05 10:32
2008.01.13
зона покрытия сотовых


15-1197264407
Gydvin
2007-12-10 08:26
2008.01.13
windows server 2003 и русские названия папок


3-1189053463
de.
2007-09-06 08:37
2008.01.13
Поиск по Lookup полям





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский