Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - aplikácia bez GUI - ako na to?

Mám vlastne jednoduchý zápis služby. Neivem ako to spustiť, prípadne, čo tomu ešte chýba. Tiež by ma zaujímalo, či opakované spúšťanie metódy Execute zabezpečí systém alebo si to musím zabezpečiť sám pomocou TTimer. Myslím, že s tým súvisí vlastnosť WaitHint.

unit uShutDown;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
  IniFiles;

type
  TShutdownLog = class(TService)
    procedure ServiceCreate(Sender: TObject);
    procedure ServiceDestroy(Sender: TObject);
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
    procedure ServiceExecute(Sender: TService);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
    procedure ServiceShutdown(Sender: TService);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
  private
    { Private declarations }
    LogFile: TInifile;
    LogIndex: Integer;
    procedure SaveTime;
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

var
  ShutdownLog: TShutdownLog;

implementation

{$R *.DFM}

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

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

procedure TShutdownLog.SaveTime;
begin
  LogFile.WriteDateTime('Logs', 'Time' + IntToStr(LogIndex) + 'Off', Time);
end;

procedure TShutdownLog.ServiceCreate(Sender: TObject);
begin
  LogFile := TIniFile.Create('Computer.log');
  LogIndex := LogFile.ReadInteger('Main', 'Count' , 0);
  Inc(LogIndex);
  LogFile.WriteDateTime('Logs', 'Time' + IntToStr(LogIndex) + 'On', Time);
  LogFile.WriteInteger('Main', 'Count', IntToStr(LogIndex));
  SaveTime;
end;

procedure TShutdownLog.ServiceDestroy(Sender: TObject);
begin
  SaveTime;
  LogFile.Free;
end;

procedure TShutdownLog.ServiceContinue(Sender: TService;
  var Continued: Boolean);
begin
  SaveTime;
end;

procedure TShutdownLog.ServiceExecute(Sender: TService);
begin
  SaveTime;
end;

procedure TShutdownLog.ServicePause(Sender: TService; var Paused: Boolean);
begin
  SaveTime;
end;

procedure TShutdownLog.ServiceShutdown(Sender: TService);
begin
  SaveTime;
end;

procedure TShutdownLog.ServiceStart(Sender: TService;
  var Started: Boolean);
begin
  SaveTime;
end;

procedure TShutdownLog.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  SaveTime;
end;

end.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny