Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Отправить сообщения в службу   Найти похожие ветки 

 
Ling ©   (2006-09-12 18:36) [0]

Пытаюсь написать службу.
В эту службу необходимо отправлять сообщения.
Подскажите, как мне это сделать :)
Вот моя неуклюжая попытка:
Служба:


unit ServiceUnit;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,JobClasses,
 xmldom, XMLIntf, msxmldom, XMLDoc,SyncObjs,ComObj,Activex;

type

 TMainThread=class(TThread)
 private
   FEvent:TEvent;
 protected
   procedure Execute; override;
 public
   constructor Create(CreateSuspended: Boolean);
   destructor destroy;override;
 end;

 TService1 = class(TService)
   XMLDocument1: TXMLDocument;
   procedure InitPathExe;
   procedure ServiceStart(Sender: TService; var Started: Boolean);
   procedure ServiceStop(Sender: TService; var Stopped: Boolean);
   procedure ServiceCreate(Sender: TObject);
   procedure ServiceDestroy(Sender: TObject);

 private
   FMainThread:TMainThread;
   Storage:TspData;
   FPathexe:string;
   { Private declarations }
 public
   function GetServiceController: TServiceController; override;

   { Public declarations }
 end;

var
 Service1: TService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
 Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
 Result := ServiceController;
end;

procedure TService1.InitPathExe;
var
 Buffer: array[0..MAX_PATH] of Char;
begin
 FillChar(buffer, sizeof(buffer), #0);
 GetModuleFileName(HInstance, buffer, MAX_PATH);
 FPathExe := string(buffer);
end;

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
 FMainThread.Resume;
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
 FMainThread.Terminate;
end;

{ TMainTread }

constructor TMainThread.Create(CreateSuspended: Boolean);
begin
 inherited;
 FEvent := TEvent.Create(nil, False,false, "Global\JMService_EventLoad");
end;

destructor TMainThread.destroy;
begin
 FEvent.free;
 inherited;
end;

procedure TMainThread.Execute;
var
 SL:TStringList;
 wr:TWaitResult;
begin
 SL:=tStringList.Create;
 try
   while not terminated do
   begin
         wr:= FEvent.WaitFor(1000);
         case wr of
           wrSignaled:SL.Add(TimeToStr(now)+"::wrSignaled");
           wrTimeout:SL.Add(TimeToStr(now)+"::wrTimeout");
           wrAbandoned:SL.Add(TimeToStr(now)+"::wrAbandoned");
           wrError:SL.Add(TimeToStr(now)+"::wrError");
         end;
     SL.SaveToFile("d:\sp\log.txt");
   end;
 finally
 end;
end;

procedure TService1.ServiceCreate(Sender: TObject);
begin
 FMainThread:=TMainThread.Create(true);
end;

procedure TService1.ServiceDestroy(Sender: TObject);
begin
 FMainThread.Terminate;
 FMainThread.Free;
end;

end.


из длругого приложения я делаю следующее::

procedure TForm1.FormCreate(Sender: TObject);
begin
 ...
 FEvent := TEvent.Create(nil, False,false, "Global\JMService_EventLoad");
end;

procedure TForm1.ff1Click(Sender: TObject);
begin
 FEvent.SetEvent;
end;


 
Fay ©   (2006-09-12 22:28) [1]

А где тут сообщения?


 
Сергей М. ©   (2006-09-13 10:08) [2]


> FEvent := TEvent.Create(nil, False,false, "Global\JMService_EventLoad");


А вот цитата из справки:

Name can be a string of up to 260 characters, not including the backslash character (\).

??



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.047 c
2-1167362436
Adios
2006-12-29 06:20
2007.01.21
TRichEdit


6-1156092051
nordic3
2006-08-20 20:40
2007.01.21
Скриншот по сети


4-1157541202
Ketrikken
2006-09-06 15:13
2007.01.21
Работа с видеокамерой


15-1167133593
Piroxyline
2006-12-26 14:46
2007.01.21
Этот форум через WAP и Google


2-1166304928
coxxx
2006-12-17 00:35
2007.01.21
Как программно создать подключению к инету