![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| sl8er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 14.6.2007 Репутация: нет Всего: нет |
Добрый день.
Стоит задача написать консольное приложение, которое должно иметь возможность установки как службы Windows. Нет проблем с написанием Console Application и Service Application, но в отдельности. Возможно ли как-то совместить их в одном проекте? |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Можно попробовать. Но не уверен, что будет работать.
А в чём проблема проверить-то? Берёте service-приложение, да меняете его тип на консольку. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| sl8er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 14.6.2007 Репутация: нет Всего: нет |
По заданию необходимо чтобы это было одно приложение, а не два
|
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
-------------------- |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
поэксперементировал = сервисы с консолью не могут работать
но мсдн говорит
-------------------- |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Это вы к чему? А я что предлагаю? Меняете тип сервиса на консольную программу. Вот вам ваше "одно приложение". Что не так? Да вроде автор про это и не спрашивал. Если я правильно понял, он хочет один .exe пускать в двух режимах: как консоль (запускаемую как обычно) и как службу. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
CodeMonkey
значит я не так понял автора ) в таком случае то что он хочет спокойно реализуемо -------------------- |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Можно ведь написать обычное приложение и установить его в винде как службу? При установке указать нужные параметры, типа там Разрешить взаимодействие с Рабочим столом и т.д.
|
|||
|
||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Нельзя. Сервис при запуске должен зарегистрировать (RegisterServiceCtrlHandler) свою процедуру Handler (или HandlerEx, но это уже нужно немного поизвращаться). Это действо производит TServiceApplication. Обычное приложение (тем более - консольное) такого не делает. Я делал переключаемое GUI<->Service приложение. Это выглядело как-то так (применительно к консольному, думаю, америку не открою): in ???.dpr :
StartAsService может вычисляться, например, по параметру командной строки т.к. при установке службы допускается задавать на запуск всякие ParamStr. Само собой - вся логика должна быть не в dpr, а в общих для обоих типов запуска программы модулях. Кроме того, не нужно забывать, что в Vista и Win7 интерактивные службы запрещены, так что о всяких MessageBox, иконках в трее, перечислении окон на рабочем столе и всего прочего, что касается визуального отображения, нужно ЗАБЫТЬ. |
||||
|
|||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Помню, когда я был ещё зелёным, то пробовал поставить на скринсейвер 95-й Винды графическую прогу на Турбо Паскале. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
яж сорцы выложил для кого? )))
-------------------- |
|||
|
||||
| sl8er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 14.6.2007 Репутация: нет Всего: нет |
Понял. Всем спасибо
|
|||
|
||||
| sl8er |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 14.6.2007 Репутация: нет Всего: нет |
ругается, т.к. в консольном варианте Application не является TServiceApplication. Можно ли динамически создавать Application? Логика вынесена в отдельный класс. В консоли/сервисе нужно только его создать. Но не получается |
||||||||
|
|||||||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
что за бред? дельфятники пора уже и абстрагироваться от своих TServiceApplication ))))
в самом начале делаем StartServiceCtrlDispatcher если возврашает 0 то мы явно не сервис, если не 0 то сервис. -------------------- |
|||
|
||||
| sl8er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 14.6.2007 Репутация: нет Всего: нет |
Так это я должен сказать приложению, как ему стартовать. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |