|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2010, 22:38 | #1 |
Пользователь
Регистрация: 22.02.2010
Сообщений: 24
|
странности ControlServiceEx()
Здравствуйте, уважаемые коллеги!
Проблема такая: написал я сервис, использующий для обработки сообщений ControlServiceEx(). Сервис нормально создается вызовом CreateService(), запускается вызовом StartService(), удаляется вызовом DeleteService(). Но при попытке послать сервису любую (!) команду получаю системную ошибку "Параметр задан неверно". Работаю в Windows7. Вот пример кода посылки команды: SERVICE_CONTROL_STATUS_REASON_PARAM ETR AddParametr; DWORD dwControl=SERVICE_CONTROL_PAUSE; rez = ControlServiceEx(hService, dwControl, SERVICE_CONTROL_STATUS_REASON_INFO, &AddParametr); Запускал прогу, которая посылает команды, "от имени администратора" - тот же результат. В журнале событий никаких записей. Для смеха создал точно такой же сервис, но расчитанный на ControlService(), так тот работает как часы. Поиск по MSDN и Google ничего не прояснил. Просто не знаю что и подумать. Третий день бьюсь. У кого какие будут соображения? |
23.10.2010, 05:32 | #2 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
SERVICE_CONTROL_STATUS_REASON_PARAM <> SERVICE_CONTROL_STATUS_REASON_PARAM S
(какого чёрта там пробел появился? я его не вводил)
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
23.10.2010, 13:25 | #3 |
Пользователь
Регистрация: 22.02.2010
Сообщений: 24
|
|
24.10.2010, 17:21 | #4 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
У вас в коде AddParametr - параметр. А должно быть - параметры.
Последний параметр - должен быть типа SERVICE_CONTROL_STATUS_REASON_PARAM S (params, множественное число). У вас - что-то непонятное. Что ещё за Parameter?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
28.10.2010, 20:19 | #5 |
Пользователь
Регистрация: 22.02.2010
Сообщений: 24
|
Ну Вы даете! AddParametr - это имя переменной, а не ее тип. А имя можно выбирать любым :-)
|
28.10.2010, 20:39 | #6 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Да ёкарный бабай. Причём тут AddParametr?
У вас ТИП SERVICE_CONTROL_STATUS_REASON_PARAMETR PARAMETER! Должно быть PARAMS. В MSDN написано: SERVICE_CONTROL_STATUS_REASON_PARAMS. (Вот уж воистину: глаза видят только то, что видит мозг).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
странности с ICQ | VovanZ | Софт | 7 | 19.06.2010 23:45 |
Странности в Builder 6 | Foxtrod | C++ Builder | 10 | 03.10.2009 01:09 |
Странности Chrome` а | ]Wowan[ | Софт | 1 | 27.04.2009 04:11 |
Странности FireBird (Создание пользователей) | KiSH333 | БД в Delphi | 1 | 10.03.2009 12:39 |
Странности в работе с событием OnTimer | Mixasik | Общие вопросы Delphi | 3 | 17.01.2009 01:22 |