Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сервис [D7, XP]


Страницы:   1 2 3 4

Levin_610 ©   (2006-07-14 12:50:00) 

как зарегестрировать программу, как сервис?


Levin_610   (2006-07-20 15:49:00) [1]

вопросы всё ещё в силе, про СервиКонтрол и последний, буду благодарен за помощь


Levin_610   (2006-07-20 09:52:00) [2]

спасибо конечно, но я бедный стцдент до зарплаты, а зарплату я не получу, если не сделаю программу - замкнутый круг получается), по
тому я спрошу, если кто захочет ответит:
почему-то если запускать прогу через прописания /install, то потом связь устанавливается видимо, во всяком случае служба запускается, но мне нужно, чтобы служба автоматически устанавливалась, у меня это прописано, но тогда появляется вышеупомянутая ошибка, это значит, что что-то не совсем правильно в CreatNTService?


Fay   (2006-07-20 09:45:00) [3]

http://www.booka.ru/booka_topic_5114?id=17892


Levin_610   (2006-07-20 09:01:00) [4]

Как написать СервисКонтроллер, чтобы всё действовало?


Levin_610   (2006-07-19 16:21:00) [5]

я нашёл в чем там глюк был, теперь он другое пишет:
"Процесс службы не может установить связь с контроллером службы"


Levin_610   (2006-07-19 16:13:00) [6]

у меня нет его в процессах


isasa   (2006-07-19 15:37:00) [7]

Ctrl+Shift+Esc - закладка Processes, ищем, удаляем.
Зарегистрировать, запустить, остановить, приостановить, восстановить, удалить (Register, Start, Stop, Pause, Resume, Unregister) - разные действия.
Надо читать первоисточники.
Так не пойдет - сумбур. :)


Levin_610   (2006-07-19 15:24:00) [8]

DispatchTable[0].lpServiceName:=ServiceName;
DispatchTable[0].lpServiceProc:=@ServiceProc;

DispatchTable[1].lpServiceName:=nil;
DispatchTable[1].lpServiceProc:=nil;
У меня вот так вот, но ServiceName = 'ServiceName'


Levin_610   (2006-07-19 15:22:00) [9]

пишет, что одна копия службы уже запущена, но я удалил тогда службу эту, он всё равно пишет тоже самое


isasa   (2006-07-19 15:16:00) [10]

:)
Должно так(на англ.)
StartServiceCtrlDispatcher Error 1063(427) The service process could not connect to the service controller

Криво расставил точки входа.

DispatchTable[0].lpServiceName:=<ServiceName>;
DispatchTable[0].lpServiceProc:= @ServiceProc;

DispatchTable[1].lpServiceName:=nil;
DispatchTable[1].lpServiceProc:=nil;


isasa   (2006-07-19 15:10:00) [11]

:)
Ну а так

if not StartServiceCtrlDispatcher(DispatchTable[0]) then begin
 ErrCode:=GetLastError();
 MessageBox(0,
   PChar('StartServiceCtrlDispatcher Error '+format('%d(%x) %s', [ErrCode, ErrCode, SysErrorMessage(ErrCode)])),
   'Start Service Error ',
   MB_OK or MB_ICONERROR or MB_SERVICE_NOTIFICATION);
end;


Кодировка?
Винда русская, небось от 2000 или ХР, т.е. консоль - юникод, в файл пишем как со всеми вытекающими.
Кстати, дома на русской тоже надо потренироваться.


Levin_610   (2006-07-19 14:20:00) [12]

после того, как я ввёл этот код - он вывел следующее на экран:
StartServiceCtrlDispatcher Error 1063<427> - а дальше набор символов на непонятном языке


Levin_610   (2006-07-19 13:55:00) [13]

хорошо, спасибо, ща попробую.


isasa   (2006-07-19 12:49:00) [14]

Levin_610 ©   (19.07.06 12:30) [54]
Перепиши приблизительно так, и почитай, что пишет

if not StartServiceCtrlDispatcher(DispatchTable[0]) then begin
  ErrCode:=GetLastError();
  LogError(
               'StartServiceCtrlDispatcher Error '+
               format('%d(%x) %s', [ErrCode, ErrCode, SysErrorMessage(ErrCode)])
             );
end;


Levin_610   (2006-07-19 12:30:00) [15]

у меня заходит сюда:   if not StartServiceCtrlDispatcher(DispatchTable[0]) then
   LogError('StartServiceCtrlDispatcher Error');
т.е. неправидьно выполняется StartServiceCtrlDispatcher, с чем это может быть связано?
помогите пожалуйста.


Levin_610   (2006-07-19 09:21:00) [16]

вопрос всё ещё в силе)


Levin_610   (2006-07-18 15:07:00) [17]

теперь служба запускается, но дает ошибку сразу же, где можно искать ошибку: при приёме данных от SCM, что-то с потоком может быть не так? - конечно понимаю - глупо спрашивать, где в моём коде ошибка) , но мало ли у кого есть идеи. Но и всё же, если у кого есть servicestart и servicestop нормальные...пожалуйста)


Levin_610   (2006-07-18 14:21:00) [18]

я вообщем локализовал ошибку, она в ф-ции СервисСтарт, не у кого нет рабочей версии этой функции?) Странная вещь, когда я расскомментирую описания процедуры СервисСтарт,  у меня не может сервис зарегестрироваться, как такое может быть?


Levin_610   (2006-07-18 14:06:00) [19]

szPath, // path to service's binary  <-- откуда взял? - где-то прочситал, что так можно сделать) , а это неправильно?  кстати там я ошибся в адресе, правда тебперь при запуске не отвечает моя программа на запрос, но это уже другая история)


isasa   (2006-07-18 13:06:00) [20]

А проверить, где зарегистрирован модуль службы и есть ли он там. :)

       SC_HANDLE schService = CreateService(
               schSCManager, // SCManager database
               srvName, // name of service
               srvDispName, // service name to display
               SERVICE_ALL_ACCESS, // desired access
               SERVICE_WIN32_OWN_PROCESS, // service type
               SERVICE_DEMAND_START, // start type
               SERVICE_ERROR_NORMAL, // error control type
                szPath, // path to service's binary  <-- откуда взял?
               NULL, // no load ordering group
               NULL, // no tag identifier
               NULL, // no dependencies
               NULL, // LocalSystem account
               NULL); // no password


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо