Сервис с MFC
От: Aracon  
Дата: 27.04.06 09:33
Оценка:
Здравствуйте!
Передо мной встала задача написать сервис с MFC (с пользовательским интерфейсом — иконка в трее, диалоговые окна). Проблема в том, что не получается выводить диалоговое окно так, чтобы оно полностью прорисовывалось и реагировало на действия пользователя.
Если вызывать диалог до StartServiceCtrlDispatcher(), то он не реагирует на действия пользователя, если после — появляется только после завершения работы сервиса (т.е. StartServiceCtrlDispatcher() возвращает управление только после остановки службы).
Подскажите, пожалуйста, как это все реализовать. Варианты с отделением юзер-интерфейса в отдельное приложение или использования srvany не подходят. Знаю, что сервис с MFC возможен (да и в архивах форума сообщения об этом есть), но вот материалов по реализации не нашел.

27.04.06 19:20: Перенесено модератором из 'C/C++' — Кодт
Re: Сервис с MFC
От: Игорь Вартанов Ниоткуда  
Дата: 27.04.06 17:07
Оценка: 1 (1) +1
Здравствуйте, Aracon, Вы писали:

A>Подскажите, пожалуйста, как это все реализовать. Варианты с отделением юзер-интерфейса в отдельное приложение или использования srvany не подходят.


Вариант с отделением юзер-интерфейса есть самый правильный с точки зрения security. Если он не подходит, то возникает вопрос "почему"? ("Может что-то в консерватории подправить?.."(С) )
---
С уважением,
Игорь
Re[2]: Сервис с MFC
От: Aracon  
Дата: 27.04.06 17:23
Оценка:
Здравствуйте, Игорь Вартанов, Вы писали:

A>>Подскажите, пожалуйста, как это все реализовать. Варианты с отделением юзер-интерфейса в отдельное приложение или использования srvany не подходят.


ИВ>Вариант с отделением юзер-интерфейса есть самый правильный с точки зрения security. Если он не подходит, то возникает вопрос "почему"? ("Может что-то в консерватории подправить?.."(С) )


Потому что заказчику хочется, чтобы был один exe-шник.
Re[3]: Сервис с MFC
От: Игорь Вартанов Ниоткуда  
Дата: 27.04.06 17:37
Оценка:
Здравствуйте, Aracon, Вы писали:

A>Потому что заказчику хочется, чтобы был один exe-шник.


Мда... Случай, что называется, клинический. Сделать один экзешник, и запускать десктопную часть со специальным ключом не сильно обеспокоит заказчика?
---
С уважением,
Игорь
Re: Сервис с MFC
От: Аноним  
Дата: 27.04.06 19:16
Оценка:
А создавать окно в ServMain не пробовали. Хотя ИМХО правильно предложили насчёт 2 в 1 в зависимости от ключей. Например запуск без ключей — запускает интерфейс, а запуск с ключом /service запускает сервис.
Re[2]: Сервис с MFC
От: Игорь Вартанов Ниоткуда  
Дата: 28.04.06 09:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А создавать окно в ServMain не пробовали. Хотя ИМХО правильно предложили насчёт 2 в 1 в зависимости от ключей. Например запуск без ключей — запускает интерфейс, а запуск с ключом /service запускает сервис.


Говорено-переговорено уже — нельзя в сервисе запускать гуевый мотлох, т.к. любой хук позволит внедриться в процесс сервиса. Если при этом не приняты меры по снижению прав для треда, крутящего гуй, то все плохо...

Отдельный вопрос — определение момента, когда нужно показать гуй. Не стоит сервису морочиться с этим, проще поручить запуск гуя либо шеллу (либо через реестр, либо через Startup меню), либо самому юзеру делать это вручную.

Кстати, способов использовать dll (надеюсь, против dll заказчик не имеет возражений) в качестве контейнера для гуевого кода можно придумать минимум два:

Вобщем это уже вопрос предпочтений, умения и фантазии...
---
С уважением,
Игорь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.