![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему мне не удается зарегить сервис в системе [D7]
KyRo © (2006-04-27 14:15:00)Добрый день.
Решил начать все с нуля и начал писать новый сервис
взял из репозитория ServiceApplication прописал события
но что то он не хочет регится в системе из за чего это может быть
или чего не хватает ?
unit Main_Sever_Services;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;
type
TServer_Service_LogB = class(TService)
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServiceExecute(Sender: TService);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
Server_Service_LogB: TServer_Service_LogB;
I:Integer;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Server_Service_LogB.Controller(CtrlCode);
end;
function TServer_Service_LogB.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TServer_Service_LogB.ServiceStart(Sender: TService; var Started: Boolean);
begin
Started:=True;
end;
procedure TServer_Service_LogB.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
Stopped:=False;
end;
procedure TServer_Service_LogB.ServiceExecute(Sender: TService);
begin
ShowMessage('1');
end;
end.
KyRo (2006-04-27 16:35:00) [1]Не вроде запустился и работает после того как прописал то что советовал рамиль .
А вопрос еще где мне осуществлять выполнения своего кода в онэкзекут запускать нить и ее зацыкливать или где ?
Сергей М. (2006-04-27 16:06:00) [2]
> сразу после запуска
Рассказывай подробно, как ты осуществляешь этот самый "запуск сервиса"
Рамиль (2006-04-27 15:33:00) [3]
> KyRo (27.04.06 15:16) [3]
Ты назначил обработчик для OnExecute. А в справке черным по белому написано:
If you are not spawning a new thread to handle individual service requests in an OnStart event handler, this is where you implement the service. When the OnExecute event handler finishes, the service thread terminates. Most OnExecute event handlers contain a loop that calls the service thread’s ProcessRequests method so that other service requests are not locked out.
А если бы ты внимательнее посмотрел пример использования, то увидел бы в обработчике OnExecute такие строчки:
while not Terminated do begin
ServiceThread.ProcessRequests(True);
end;
KyRo (2006-04-27 15:16:00) [4]Вроде установился .
Но теперь сразу после запуска останавливается и виндовс пишет что сервисы сами останавливаются когда не чего не делают
а я ж вроде как вывожу сообщение
KyRo (2006-04-27 15:07:00) [5]Поменял но все равно сервис не регистрируется !
Виндовс не выдает не какую ошибку он просто пропускает
D:\Project\logbn_server_servis\Server_Servis.exe /instal
и так пробовал
D:\Project\logbn_server_servis\Server_Servis.exe -service
Он просто не хочет регистрироватся
Сергей М. (2006-04-27 14:40:00) [6]
> что то он не хочет регится в систем
"Регить" следует запуском сервис-приложения ком.строкой с ключем /INSTALL
> procedure TServer_Service_LogB.ServiceStop(Sender: TService;
> var Stopped: Boolean);
> begin
> Stopped:=False;
> end;
>
Почему Stopped:=False ?
Так сервис никогда не сможет быть остановлен.
> procedure TServer_Service_LogB.ServiceExecute(Sender: TService);
>
> begin
> ShowMessage('1');
> end;
Это недопустимо.
Для вывода отл.сообщений пользуй MessageBox().