Здравствуйте, Pavel Dvorkin, Вы писали:
PD>WM_ENDSESSION
Краткость — сестра таланта
надо еще не забыть MessagePump в цикл добавить.... тогда можно WM_ENDSESSION ждать, а можно PostThreadMessage пользовать для ручного завершения...
... << Rsdn@Home 1.1.4 beta 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте, Andrew S, Вы писали:
>>>>> Есть процесс который висит в фоне и периодически выполняет какиенибудь действия. [b]Процесс не [...] AS>Не будет. Т.о. у вас варианты на выбор — либо создавать консоль, либо скрытое окно
решение оказалось гораздо более простым — вместо Sleep() надо использовать WaitForSingleObject(). В этом случае программа завершается без вопросов, и винда не выкидывает никаких сообщений.
Здравствуйте, vlaman, Вы писали:
V>как тогда быть? получается что кроме как создавать окно и ловить им сообщение, других V>способов решения в win32 нет?
есть — читай мой пост
... << Rsdn@Home 1.1.4 beta 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
V>Каким образом я могу узнать что мне необходимо завершатся (пользователь нажал завершение работы)? V>В данном случае оно всё таки завершается — но на экран выскакивает сообщение что процесс необходимо завершить или подождать — хотелось бы чтобы такого не было.
V>Подскажите плиз, заранее благодарен!
Кстати, в контексте не отлова события, а просто непоказа окна завершения — может еще SetProcessShutdownParameters(хх,SHUTDOWN_NORETRY) поможет?
Здравствуйте, Andrew S, Вы писали:
V>>Каким образом я могу узнать что мне необходимо завершатся (пользователь нажал завершение работы)? V>>В данном случае оно всё таки завершается — но на экран выскакивает сообщение что процесс необходимо завершить или подождать — хотелось бы чтобы такого не было.
V>>Подскажите плиз, заранее благодарен!
AS>Кстати, в контексте не отлова события, а просто непоказа окна завершения — может еще SetProcessShutdownParameters(хх,SHUTDOWN_NORETRY) поможет?
Здравствуйте, vlaman, Вы писали:
V>решение оказалось гораздо более простым — вместо Sleep() надо использовать WaitForSingleObject(). В этом случае программа завершается без вопросов, и винда не выкидывает никаких сообщений.
Здравствуйте, 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....