Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

QueryEndSession - как чуток подождать?.. [Delphi, KOL/MSK 2.07, Windows]


Vladimyr ©   (2005-03-16 17:03:00) 

Всем добрый день, посоветуйте, как правильно использовать
обработчик OnQueryEndSession?

    Мне нужно притормозить завершение работы Windows XP
на несколько секунд, пока моя программа доделает свои дела ;)
С большим удивлением заметил, что это не так-то просто!
Установка в обработчике Accept := falseполностью
прерывает процесс Shutdown'а, а использование цикла ожидания типа

whileSome_Custom_Flag doSleep (100); Accept := true;

не приостанавливает выполнение процесса - программа всё равно
закрывается!

    Прервать Shutdown, а потом инициировать его самому ещё раз,
непросто по причине того, тогда нужно как-то определить, что же
это было - выключение компьютера или перезагрузка.


Vladimyr   (2005-03-17 00:40:00) [1]

Unfortunately, it doesn't work. :(

WaitForSingleObjectis waiting,
but the program is being closed in spite of it,
if I do not return Accept := false.

Otherwise, if I do, the shutdown process is stopped
and needs to be started one more time.

What I can't do programmely since I don't know
if it was restarting the system or turning off the PC.

So, all the same...


Vladimyr   (2005-03-16 20:34:00) [2]

As I suspected :)
Thank you a lot, I'll try...


thaddy   (2005-03-16 19:48:00) [3]

Use an API event object on your task. That's how I do it.


Vladimyr   (2005-03-16 18:58:00) [4]

Thank, Thaddy, but how can I stop and wait inside OnQueryEndSessionprocedure?
I shouldn't return neither truenor falseto the system till the main thread is finished!


thaddy   (2005-03-16 17:51:00) [5]

You can use an Observer thread to monitor if your program has finished. If the thread ends after waitforsingleobject on the main thread, you can set accept to true.


Наверх

Титульная страница Поиск, карта сайта Написать письмо