Главная страница
    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.45 MB
Время: 0.039 c
15-1167581182
ArtemESC
2006-12-31 19:06
2007.01.21
-∞ =>... => 1 => 2 => ... => 2006 => !! => 2007 => .... => +∞


2-1167926793
altex
2007-01-04 19:06
2007.01.21
Маленькая задачка


15-1167746171
lookin
2007-01-02 16:56
2007.01.21
Любителям английского


15-1167317916
Германн
2006-12-28 17:58
2007.01.21
Ну, блин и Новый Год!


15-1166525265
Rouse_
2006-12-19 13:47
2007.01.21
Просто гениально!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский