![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 returnAccept := 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 neithertruenorfalseto 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.