![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сервис [D7, XP]
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