переделка под сервис
От: Аноним  
Дата: 09.12.03 13:08
Оценка:
Есть приложение, оконное приложение, но окно используется только для отображения кое какой мониторинговой информация и вот понадобилось переделать это приложение в виде сервиса, вообщем переделал я, но как вижу есть проблемы с таймерами, а таймеры завязаны с хенлом окна, как можно безболезненно не переписывая много кода, сделать все таки сервисом приложение?
Re: переделка под сервис
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 09.12.03 16:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть приложение, оконное приложение, но окно используется только для отображения кое какой мониторинговой информация и вот понадобилось переделать это приложение в виде сервиса, вообщем переделал я, но как вижу есть проблемы с таймерами, а таймеры завязаны с хенлом окна, как можно безболезненно не переписывая много кода, сделать все таки сервисом приложение?


Таймеры отнюдь не обязательно должен быть "завязаны с хенлом окна" — достаточно воспользоваться последним параметром функции SetTimer() и указать свою функцию обработки сообщений от таймера. hWnd при этом задается равным NULL.
- Искренне ваш, Поросенок Пафнутий
Re[2]: переделка под сервис
От: TaniaDen  
Дата: 10.12.03 00:24
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Таймеры отнюдь не обязательно должен быть "завязаны с хенлом окна" — достаточно воспользоваться последним параметром функции SetTimer() и указать свою функцию обработки сообщений от таймера. hWnd при этом задается равным NULL.


До, но даже в этом случае нужн цикл выборки сообщений.
Re[3]: переделка под сервис
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 10.12.03 05:41
Оценка:
Здравствуйте, TaniaDen, Вы писали:

TD>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>Таймеры отнюдь не обязательно должен быть "завязаны с хенлом окна" — достаточно воспользоваться последним параметром функции SetTimer() и указать свою функцию обработки сообщений от таймера. hWnd при этом задается равным NULL.


TD>До, но даже в этом случае нужн цикл выборки сообщений.


Вообще, я использую в сервисах waitable timer-ы, создаваемые в отдельном потоке. Не знаю, сочтет ли автор топика переход на них "безболезненным".
- Искренне ваш, Поросенок Пафнутий
Re[4]: переделка под сервис
От: Аноним  
Дата: 10.12.03 08:07
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Здравствуйте, TaniaDen, Вы писали:


TD>>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>>Таймеры отнюдь не обязательно должен быть "завязаны с хенлом окна" — достаточно воспользоваться последним параметром функции SetTimer() и указать свою функцию обработки сообщений от таймера. hWnd при этом задается равным NULL.


TD>>До, но даже в этом случае нужн цикл выборки сообщений.


SDB>Вообще, я использую в сервисах waitable timer-ы, создаваемые в отдельном потоке. Не знаю, сочтет ли автор топика переход на них "безболезненным".


выходит проблема только с таймерами?
Re[2]: переделка под сервис
От: Аноним  
Дата: 10.12.03 16:39
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Здравствуйте, Аноним, Вы писали:


А>>Есть приложение, оконное приложение, но окно используется только для отображения кое какой мониторинговой информация и вот понадобилось переделать это приложение в виде сервиса, вообщем переделал я, но как вижу есть проблемы с таймерами, а таймеры завязаны с хенлом окна, как можно безболезненно не переписывая много кода, сделать все таки сервисом приложение?


SDB>Таймеры отнюдь не обязательно должен быть "завязаны с хенлом окна" — достаточно воспользоваться последним параметром функции SetTimer() и указать свою функцию обработки сообщений от таймера. hWnd при этом задается равным NULL.


а вообще можно как то сделать сервис если у меня есть два нивидимых окна, и на них завязаны события типа таймера... или нет?
Re[3]: переделка под сервис
От: KGP http://kornilow.newmail.ru
Дата: 11.12.03 07:48
Оценка:
Здравствуйте, TaniaDen, Вы писали:

TD>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>Таймеры отнюдь не обязательно должен быть "завязаны с хенлом окна" — достаточно воспользоваться последним параметром функции SetTimer() и указать свою функцию обработки сообщений от таймера. hWnd при этом задается равным NULL.


TD>До, но даже в этом случае нужн цикл выборки сообщений.

У ATL wisard-ом созднный наследник CComModule имеет он в Run:
MSG msg;
while (GetMessage(&msg, 0, 0, 0))
  DispatchMessage(&msg);



UINT _timer_for_update=0;
До этого надо вызвать
void CALLBACK MakeUpdate(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);
_timer_for_update = ::SetTimer(NULL,0,6000,MakeUpdate);
... << RSDN@Home 1.1 beta 2 >>
Re[3]: переделка под сервис
От: black hermit Россия  
Дата: 11.12.03 08:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>Здравствуйте, Аноним, Вы писали:


А>>>Есть приложение, оконное приложение, но окно используется только для отображения кое какой мониторинговой информация и вот понадобилось переделать это приложение в виде сервиса, вообщем переделал я, но как вижу есть проблемы с таймерами, а таймеры завязаны с хенлом окна, как можно безболезненно не переписывая много кода, сделать все таки сервисом приложение?


SDB>>Таймеры отнюдь не обязательно должен быть "завязаны с хенлом окна" — достаточно воспользоваться последним параметром функции SetTimer() и указать свою функцию обработки сообщений от таймера. hWnd при этом задается равным NULL.


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


Да всё так же... Не играет роли какое приложение станет сервисом. Достаточно из главного потока вызвать OpenSCManager и CreateService. Если у приложения есть окно то свойства сервиса комбинируй с SERVICE_INTERACTIVE_PROCESS, длятого, чтобы сервис смог это окно показать. А вообще RTFM... в MSDN всё подробно описано
The darkness around me
Shores of solar sea
Oh how i wish to go down with the sun....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.