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

Chcel by som urobiť program na logovanie času zapnutia počítača. Malo by to bežať na pozadí ako proces bez okna aplikácie, to znamená, že nechcem, aby sa zobrazovala aplikácia dole na lište. Nebudem teda vytvárať okno aplikácie. Lenže dá sa niečo také vôbec napísať? Mal by som vlastne len súbor DPR bez knižníc (PAS, DFM), čiže formulárov. Ako budem potom testovať správu na ukončenie aplikácie, čiže udalosť OnCloseQuery?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Mám vlastne jednoduchý zápis služby. Neivem ako to spustiť, prípadne, čo tomu ešte chýba. Tiež by ma…
msx. 27.05.2007 16:42
msx.
Ked nieco nevies, tak si to najdi v MSDN, to je standardny postup. P.S. Aby si nepovedal ze som svi… poslední
MM.. 27.05.2007 19:29
MM..

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.

Ked nieco nevies, tak si to najdi v MSDN, to je standardny postup.

P.S. Aby si nepovedal ze som svina nasiel som ti v tom MS bordeli ze kde sa pojednava o services
http://msdn2.microsoft.com/en-us/library/ms685141.a spx
mas tam about services, using services, reference, about je vzdy vseobecny pokec (ako to funguje), using ze ako sa to pouziva, reference je zoznam funkcii/struktur atd.
P.S.2. prip ak pouzivas nejaky medziclanok (ten class TService apod tak si pozri pokec o nom alebo zdrojak, a ak je to bez pokecu tak nepouzivaj Delphi nechapem ako moze niekto nieco pouzivat bez toho aby mal o tom informacie).

Zpět do poradny Odpovědět na původní otázku Nahoru