topsel
Зарегистрирован: 29.01.2005 Сообщения: 10 Откуда: vladivostok
|
Добавлено: Сб Янв 29 2005 02:58 Заголовок сообщения: установка служб в win2k/xp |
|
|
написал на delphi6 при помощи мастера службу для win2k/xp, теперь возмикла проблема с установкой ее в систему, как ни пробывал не получается. даже в реестре ее ручками прописал по примеру установленного сервиса, а оно не отображается ни в диспетчере задач, ни на вкладке управления сервисами. что не так не знаю.
вот код моей службы. пожалуйста помогите!!!
unit server;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ScktComp, ExtCtrls;
type
TNPWServer = class(TService)
ServerSocket1: TServerSocket;
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServiceCreate(Sender: TObject);
procedure ServiceStart(Sender: TService; var Started: Boolean);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
TimeColntroll = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
var
NPWServer: TNPWServer;
data: array[0..500] of string;
count,count1:integer;
time_last:integer;
implementation
uses datamodule;
{$R *.DFM}
FUNCTION MY_TIMER(time_sleep:integer):BOOLEAN;
var
time_now, long, i:INTEGER;
str, letter,word:string;
begin
result:=false;
str:=datetimetostr(now);
long:=length(str);
for i:=1 to 2 do
begin
letter:=str[long-2+i];
word:=word+letter;
end;
time_now:=strtoint(word);
if ((time_now-time_last)>time_sleep)or (time_last>time_now) then
begin
time_last:=time_now;
word:='';
result:=true;
end;
end;
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
NPWServer.Controller(CtrlCode);
end;
function TNPWServer.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TNPWServer.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
data[count]:=socket.ReceiveText;
count:=count+1;
if count=501 then
count:=0;
end;
procedure TimeColntroll.Execute;
var
data1:array[0..4]of string;
g,j,i,reset:integer;
s,str,letter:string;
label start;
begin //open0
while true do
begin
if My_timer(1)=true then
begin//open main
g:=0;
j:=1;
s:='';
str:='';
while count1<>count do
begin //open1
s:=data[count1];
if s<>'' then
begin //open2
while j<=length(s) do
begin //open3
letter:=s[j];
if letter='-' then
begin //open4
g:=0;
letter:='';
str:='';
end;//close 4
if letter='+'then
begin //open5
data1[g]:=str;
str:='';
letter:='';
g:=g+1;
end; //close5
if letter='@' then
begin //open6
data1[4]:=str;
g:=0;
letter:='';
str:='';
datamodule2.ADOTable1.Open;
datamodule2.ADOTable1.Edit;
datamodule2.ADOTable1.RecNo:=datamodule2.ADOTable1.RecordCount+1;
datamodule2.ADOTable1.Insert;
datamodule2.ADOTable1.FieldByName('computer name').AsString:=data1[0];
datamodule2.ADOTable1.FieldByName('printer model').AsString:=data1[1];
datamodule2.ADOTable1.FieldByName('user name').AsString:=data1[2];
datamodule2.ADOTable1.FieldByName('printed').AsString:=data1[3];
datamodule2.ADOTable1.FieldByName('date').AsDateTime:=STRTodate(data1[4]);
datamodule2.ADOTable1.Post;
datamodule2.ADOTable1.Close;
end;//close6
if (letter<>'-') or (letter<>'+')then
str:=str+letter;
j:=j+1;
end;//close3
end;//close2
count1:=count1+1;
if count1=501 then
count1:=0;
if s='' then
count1:=count1+1;
end;//close1
end;//close main
end;
end;//close0
procedure TNPWServer.ServiceCreate(Sender: TObject);
begin
end;
procedure TNPWServer.ServiceStart(Sender: TService; var Started: Boolean);
begin
time_laST:=0;
TimeColntroll.Create(FALSE).Priority:=tpLower;
end;
end. |
|