Re[2]: завершить себя при завершенииwindows
От: Hacker_Delphi Россия  
Дата: 13.08.04 09:16
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>WM_ENDSESSION

Краткость — сестра таланта
надо еще не забыть MessagePump в цикл добавить.... тогда можно WM_ENDSESSION ждать, а можно PostThreadMessage пользовать для ручного завершения...
... << Rsdn@Home 1.1.4 beta 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[3]: завершить себя при завершенииwindows
От: Pavel Dvorkin Россия  
Дата: 13.08.04 09:20
Оценка:
Привет!

Hacker_Delphi wrote:
>
> Здравствуйте, Pavel Dvorkin, Вы писали:
>
> PD>WM_ENDSESSION
> Краткость — сестра таланта



> надо еще не забыть MessagePump в цикл добавить.... тогда можно WM_ENDSESSION ждать, а можно PostThreadMessage пользовать для ручного завершения...


Да, конечно.

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[5]: завершить себя при завершенииwindows
От: vlaman Украина  
Дата: 13.08.04 09:23
Оценка:
Здравствуйте, Andrew S, Вы писали:

>>>>> Есть процесс который висит в фоне и периодически выполняет какиенибудь действия. [b]Процесс не [...]

AS>Не будет. Т.о. у вас варианты на выбор — либо создавать консоль, либо скрытое окно

решение оказалось гораздо более простым — вместо Sleep() надо использовать WaitForSingleObject(). В этом случае программа завершается без вопросов, и винда не выкидывает никаких сообщений.

всем спасибо за внимание!
Re[6]: завершить себя при завершенииwindows
От: Hacker_Delphi Россия  
Дата: 13.08.04 09:48
Оценка:
Здравствуйте, vlaman, Вы писали:

V>как тогда быть? получается что кроме как создавать окно и ловить им сообщение, других

V>способов решения в win32 нет?

есть — читай мой пост
... << Rsdn@Home 1.1.4 beta 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re: завершить себя при завершении windows
От: Andrew S Россия http://alchemy-lab.com
Дата: 13.08.04 10:00
Оценка:
V>Каким образом я могу узнать что мне необходимо завершатся (пользователь нажал завершение работы)?
V>В данном случае оно всё таки завершается — но на экран выскакивает сообщение что процесс необходимо завершить или подождать — хотелось бы чтобы такого не было.

V>Подскажите плиз, заранее благодарен!


Кстати, в контексте не отлова события, а просто непоказа окна завершения — может еще SetProcessShutdownParameters(хх,SHUTDOWN_NORETRY) поможет?
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[2]: завершить себя при завершении windows
От: vlaman Украина  
Дата: 13.08.04 10:02
Оценка:
Здравствуйте, Andrew S, Вы писали:

V>>Каким образом я могу узнать что мне необходимо завершатся (пользователь нажал завершение работы)?

V>>В данном случае оно всё таки завершается — но на экран выскакивает сообщение что процесс необходимо завершить или подождать — хотелось бы чтобы такого не было.

V>>Подскажите плиз, заранее благодарен!


AS>Кстати, в контексте не отлова события, а просто непоказа окна завершения — может еще SetProcessShutdownParameters(хх,SHUTDOWN_NORETRY) поможет?


да кстати ещё одно решение! сенкс!!!
Re[6]: завершить себя при завершенииwindows
От: SergH Россия  
Дата: 13.08.04 10:42
Оценка:
Здравствуйте, vlaman, Вы писали:

V>решение оказалось гораздо более простым — вместо Sleep() надо использовать WaitForSingleObject(). В этом случае программа завершается без вопросов, и винда не выкидывает никаких сообщений.


А чего ты ждёшь в WaitForSingleObject?
Делай что должно, и будь что будет
Re[6]: завершить себя при завершенииwindows
От: Stanky  
Дата: 14.08.04 08:00
Оценка:
> как тогда быть? получается что кроме как создавать окно и ловить им
> сообщение, других способов решения в win32 нет?
>
ms-help://MS.VSCC/MS.MSDNVS/winui/windows_6u5v.htm
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re: завершить себя при завершении windows
От: black hermit Россия  
Дата: 15.08.04 08:36
Оценка:
Здравствуйте, vlaman, Вы писали:

V>Есть процесс который висит в фоне и периодически выполняет какиенибудь действия. Процесс не имеет окон. Внутри всё организовано так:


V>while ( flag )

V>{
V> Sleep(1000);
V> if ( action_needed )
V> {
V> ...делаем дело...
V> }
V>}

V>Каким образом я могу узнать что мне необходимо завершатся (пользователь нажал завершение работы)?

V>В данном случае оно всё таки завершается — но на экран выскакивает сообщение что процесс необходимо завершить или подождать — хотелось бы чтобы такого не было.

V>Подскажите плиз, заранее благодарен!



Я делаю так
MSG msg

while(GetMessage(&msg, 0, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg); // Т.к нет оконной процедуры, то IMHO диспатсер не нужен но пусть будет
    if(msg.message==WM_ENDSESSION)
        DoSomeWork();
}
The darkness around me
Shores of solar sea
Oh how i wish to go down with the sun....
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.