Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > MessageBox в сервисе


Автор: Dmitry_177 23.5.2007, 18:53
Возможно ли вызывать MessageBox-ы в сервисе? Я написал свой сервис на одних API функциях, т.е. без компонента TService, но в случае ошибки в моем сервисе вызывается MessageBox, но он почему-то не отображается.. Помогите..

Автор: Yanis 23.5.2007, 20:16
Цитата(Dmitry_177 @  23.5.2007,  19:53 Найти цитируемый пост)
Возможно ли вызывать MessageBox-ы в сервисе? Я написал свой сервис на одних API функциях, т.е. без компонента TService, но в случае ошибки в моем сервисе вызывается MessageBox, но он почему-то не отображается.. Помогите.. 

А что в качестве Handle передаёшь?

Автор: Dmitry_177 23.5.2007, 20:24
Цитата

А что в качестве Handle передаёшь?


0 передаю, т.е. вот так он выглядит: MessageBox(0, 'Внимание!', ServiceName, MB_ICONWARNING + MB_OK);

Автор: Snowy 23.5.2007, 20:34
Сервис не должен взаимодействовать с пользователем.
Не для того они предназначены.
Если хочешь кидаться варнингами - кидай их в лог.

Автор: Dmitry_177 23.5.2007, 20:51
Дело в том что при запуске сервиса он считывает настройки(по умолчанию настройки тут не пройдут), ну а если какая-то ошибка при считывании или еще где, то я выдаю MessageBox с ошибкой и завершаю работу сервиса..

Если с MessageBox-ами не проходит, то как лучше сделать? Если не считались настройки то оставлять его запущенным, чтобы он ждал изменеия настроек(другая моя программка, которая после изменения настроек изменит состояние сервиса на считывание заново настроек), или вырубать сервис, а та программка после изменения настроек будет заново запускать сервис?

Автор: drkot 23.5.2007, 21:06
лог файл
отображаемые файлы
сообщения
сокеты

способов много.

Автор: dumb 23.5.2007, 21:11
Код

MessageBox(0, 'Внимание!', ServiceName, MB_SERVICE_NOTIFICATION or MB_ICONWARNING or MB_OK);

Автор: Dmitry_177 23.5.2007, 21:35
Цитата

MessageBox(0, 'Внимание!', ServiceName, MB_SERVICE_NOTIFICATION or MB_ICONWARNING or MB_OK);


Так работает  smile

Но у меня по теме два вопроса:

1: Можно ли к сервису добавить манифест, чтобы MessageBox отображался со стилем? Т.к. он у меня на АПях написан, то манифест к файлу ресурсов прикрутить..

2: Что же все же лучше делать с сервисом если не считались настройки? Выключать его или оставить запущенным в ожидании новых настроек?

Автор: Yanis 23.5.2007, 21:54
Это всё зависит от цели сервиса и какие такие настройки там.
Некоторые бывает и месагами сыплют по мелочам.

Автор: Dmitry_177 23.5.2007, 22:38
Из настроек, путь к базе данных например.. Ведь если пути небудет то и естественно он не сможет работать с базой данных и т.д.. Или например порт, сокет тогда не получится создать не зная порта..

Автор: aNGELO 26.5.2007, 19:26
Цитата

1: Можно ли к сервису добавить манифест, чтобы MessageBox отображался со стилем? Т.к. он у меня на АПях написан, то манифест к файлу ресурсов прикрутить..


можно, только наверное не манифестом а функцией InitCommonControlsEx()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)