Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизСервис Найти похожие ветки
← →
Игорь Шевченко © (2006-07-17 17:20) [40]
> ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmCreate
> or fmShareDenyWrite);
or fmShareDenyWrite - лишнее. fmCreate равен $FFFF
← →
Пусик © (2006-07-17 17:27) [41]
> Игорь Шевченко © (17.07.06 17:20) [40]
> > ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmCreate
> > or fmShareDenyWrite);or fmShareDenyWrite - лишнее. fmCreate
> равен $FFFF
Совершенно верно.
Но стоит ли этот совершенно никчемный пример, всего лишь демонстрирующий, как правильно организовать работу сервиса, используя готовый класс Delphi, разбиратть по косточкам?
← →
Fay © (2006-07-17 17:30) [42]2 Пусик © (17.07.06 17:14) [39]
> А прежде подумать, а потом говорить, тоже не судьба?
О чём это, таком умном, нужно было подумать?
← →
Пусик © (2006-07-17 17:43) [43]
> Fay © (17.07.06 17:30) [42]
> 2 Пусик © (17.07.06 17:14) [39]> А прежде подумать, а
> потом говорить, тоже не судьба?О чём это, таком умном, нужно
> было подумать?
О вечном, непреходящем. А также см. [41].
Прежде, чем цепляться к пуговицам, подумай о цели и назначении предмета одежды.
Не надо цепляться и говорить, что на майке нет пуговиц (ничего себе - майка без пуговиц!), так как она не предназначена для того, чтобы к ней пуговицы нашивали. Разве что для людей с немного измененной психикой.
← →
Игорь Шевченко © (2006-07-17 17:48) [44]Пусик © (17.07.06 17:43) [43]
flame > /dev/null
← →
Levin_610 © (2006-07-18 09:36) [45]спасибо за помощь, я уже написал, всё получилось, спасибо
← →
isasa © (2006-07-18 10:35) [46]:)
ну вот, а ты боялся ...
← →
isasa © (2006-07-18 10:38) [47]Да.
Статью с rsdn почитай. Там про время откликов потоков сервиса -- очень актуальнай момент(не только для корректного завершения)
← →
Levin_610 © (2006-07-18 12:24) [48]правильно боялся, у меня почему-то, регистроваться-то регистрируется, и удаляется, но не запускается, если пытаюсь запустить, то пишет следующее: ошибка2: не удаётся найти указанный файл
← →
isasa © (2006-07-18 13:06) [49]А проверить, где зарегистрирован модуль службы и есть ли он там. :)
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
← →
Levin_610 © (2006-07-18 14:06) [50]szPath, // path to service"s binary <-- откуда взял? - где-то прочситал, что так можно сделать) , а это неправильно? кстати там я ошибся в адресе, правда тебперь при запуске не отвечает моя программа на запрос, но это уже другая история)
← →
Levin_610 © (2006-07-18 14:21) [51]я вообщем локализовал ошибку, она в ф-ции СервисСтарт, не у кого нет рабочей версии этой функции?) Странная вещь, когда я расскомментирую описания процедуры СервисСтарт, у меня не может сервис зарегестрироваться, как такое может быть?
← →
Levin_610 © (2006-07-18 15:07) [52]теперь служба запускается, но дает ошибку сразу же, где можно искать ошибку: при приёме данных от SCM, что-то с потоком может быть не так? - конечно понимаю - глупо спрашивать, где в моём коде ошибка) , но мало ли у кого есть идеи. Но и всё же, если у кого есть servicestart и servicestop нормальные...пожалуйста)
← →
Levin_610 © (2006-07-19 09:21) [53]вопрос всё ещё в силе)
← →
Levin_610 © (2006-07-19 12:30) [54]у меня заходит сюда: if not StartServiceCtrlDispatcher(DispatchTable[0]) then
LogError("StartServiceCtrlDispatcher Error");
т.е. неправидьно выполняется StartServiceCtrlDispatcher, с чем это может быть связано?
помогите пожалуйста.
← →
isasa © (2006-07-19 12:49) [55]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 13:55) [56]хорошо, спасибо, ща попробую.
← →
Levin_610 © (2006-07-19 14:20) [57]после того, как я ввёл этот код - он вывел следующее на экран:
StartServiceCtrlDispatcher Error 1063<427> - а дальше набор символов на непонятном языке
← →
isasa © (2006-07-19 15:10) [58]:)
Ну а так
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 или ХР, т.е. консоль - юникод, в файл пишем как со всеми вытекающими.
Кстати, дома на русской тоже надо потренироваться.
← →
isasa © (2006-07-19 15:16) [59]:)
Должно так(на англ.)
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;
← →
Levin_610 © (2006-07-19 15:22) [60]пишет, что одна копия службы уже запущена, но я удалил тогда службу эту, он всё равно пишет тоже самое
← →
Levin_610 © (2006-07-19 15:24) [61]DispatchTable[0].lpServiceName:=ServiceName;
DispatchTable[0].lpServiceProc:=@ServiceProc;
DispatchTable[1].lpServiceName:=nil;
DispatchTable[1].lpServiceProc:=nil;
У меня вот так вот, но ServiceName = "ServiceName"
← →
isasa © (2006-07-19 15:37) [62]Ctrl+Shift+Esc - закладка Processes, ищем, удаляем.
Зарегистрировать, запустить, остановить, приостановить, восстановить, удалить (Register, Start, Stop, Pause, Resume, Unregister) - разные действия.
Надо читать первоисточники.
Так не пойдет - сумбур. :)
← →
Levin_610 © (2006-07-19 16:13) [63]у меня нет его в процессах
← →
Levin_610 © (2006-07-19 16:21) [64]я нашёл в чем там глюк был, теперь он другое пишет:
"Процесс службы не может установить связь с контроллером службы"
← →
Levin_610 © (2006-07-20 09:01) [65]Как написать СервисКонтроллер, чтобы всё действовало?
← →
Fay © (2006-07-20 09:45) [66]http://www.booka.ru/booka_topic_5114?id=17892
← →
Levin_610 © (2006-07-20 09:52) [67]спасибо конечно, но я бедный стцдент до зарплаты, а зарплату я не получу, если не сделаю программу - замкнутый круг получается), по
тому я спрошу, если кто захочет ответит:
почему-то если запускать прогу через прописания /install, то потом связь устанавливается видимо, во всяком случае служба запускается, но мне нужно, чтобы служба автоматически устанавливалась, у меня это прописано, но тогда появляется вышеупомянутая ошибка, это значит, что что-то не совсем правильно в CreatNTService?
← →
Levin_610 © (2006-07-20 15:49) [68]вопросы всё ещё в силе, про СервиКонтрол и последний, буду благодарен за помощь
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.011 c