![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
knut |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
добрый день.
хочу запустить ехе как сервис. если приложение консольное то ехе без проблем запускается как сервис но вот если виндовс приложением проблема. получаю ошибку 1053 (The service did not respond to the start or control request in a timely fashion.) в чем проблема? вот сам код
--------------------
|
||||||
|
|||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Видимо проблема в D:\\simple.exe, а так же возможно в том, что его при каждом запуске этой программы пытаются установить заново (это пройдет только в первый раз, потом будет давать ошибки)
|
|||
|
||||
knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
xvr,
код каторый я привел и есть simple.exe. я вот чего не могу понять. если я создаю косольное преложение то у меня сервис стартуется нормально в вот с виндовс приложением у меня возникает эта проблема. --------------------
|
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Если твое приложение использует некоторые элементы GUI, например иконку в таскбаре, то такое приложение невозможно запустить как сервис.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
В таком случае в нем отсуствует то, что должно запускаться как сервис. См. функции RegisterServiceCtrlHandler, StartServiceCtrlDispatcher, SetServiceStatus Именно они определяют успех или неуспех запуска сервиса |
|||
|
||||
knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
xvr,
Сервис запустить удалось. Но у меня вопрос. возможно ли поставить хук при запуске сервиса? у меня не как не получается. отдельно хук работает. --------------------
|
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Какой хук? И где его надо поставить?
![]() |
||||
|
|||||
knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
есть сервис и есть глобальный хук на клаву.
надо.при старте сервиса установить хук. как я делаю.
сервис устанавливается нормально. вроди и хук устанавливается. но на нажатьие клавы не реагирует. p.s отдельно запускаю хук(без сервиса) работает отлично. --------------------
|
||||
|
|||||
DrHex |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Библиотека не грузится? Или в сервисе MessageBox не вылетает? Если второе то у сервисов GUI нету...
--------------------
google.com и это все. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Попробуйте поставить хук в ServiceMain (а не в WinMain).
Кроме того, все равно не видно, как именно ставится ХУК. Пока видно только, что грузится какая то dll. Учтите, что у сервиса будет свой десктоп и WinStation. Хук может быть будет работать именно на них, а не у пользователя |
|||
|
||||
knut |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
ок код у меня большой вот и подумал лен будет вам разбираться в нем. вот сервис.
а вот сам хук
сервис нормально стартуется но хук не реагирует на нажатие клавы --------------------
|
||||||||
|
|||||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Читаем описание LowLevelKeyboardProc:
PS. Для WH_KEYBOARD_LL dll не нужна, этот хук может быть в exe |
|||
|
||||
knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
xvr,
да вы правы у тред который устанавливает хук должен иметь месидж луп. но чтоб в ServiceMain е не создавать этот цыкл я вызываю setHook в winMain e . здесь ведь все нормально с луп ом. но результат тот же. --------------------
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
А с чего там будет 'все нормально с message loopом'? winmain вообще блокируется в StartServiceCtrlDispatcher |
|||
|
||||
knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
xvr,
создал я месидж луп как и вы посоветовали но результат тот же(никакой). вот сервис маин.
что теперь не так? Это сообщение отредактировал(а) knut - 6.3.2010, 23:10 --------------------
|
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
И завершение сервиса должно теперь происходить через посылку WM_QUIT в очередь thread'а, а не через event killServiceEvent (до его ожидания просто не дойдет управление) |
|||
|
||||
knut |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
ну до выгода мне пока надо хук запустить что пока у меня не получается.
все равно KeyboardProc не вызывается ![]() ![]() ![]() ![]() --------------------
|
||||||
|
|||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Тогда действительно возможны проблемы с десктопом. Поставьте сервису флажок 'Разрешить взаимодействовать с Рабочим Столом' при инсталяции.
Это сообщение отредактировал(а) xvr - 7.3.2010, 17:13 |
|||
|
||||
knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
xvr,
стоит. я сервис содаю именно с этим флагом.
--------------------
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |