Primeramente un saludo para todos los del foro y mencionar que uso Lazarus 1.2.6 sobre Windows 7.
Deseo programar un servicio para correrlo en windows, busque mucho en internet y probe un par de ejemplos que lastimosamente no pudieron solucionar el probelma que tengo. El problema esta en que, si bien al compilar no tengo ningun error, al parecer el servicio no hace lo que esta en la secciones OnExecute, OnStart, etc. no se si es un probelma del IDE o me esta faltanfo algun detalle.
Pongo el codigo que utilice como guia y que aparentemente funciona pero en mi caso no lo hace.
Código Delphi
[-]
unit DaemonUnit1;
{$mode objfpc}
{$H+}
interface
uses
Classes, SysUtils, FileUtil, DaemonApp;
type
TDaemon1 = class(TDaemon)
procedure DataModuleExecute(Sender: TCustomDaemon);
procedure DataModuleShutDown(Sender: TCustomDaemon);
procedure DataModuleStart(Sender: TCustomDaemon; var OK: boolean);
procedure DataModuleStop(Sender: TCustomDaemon; var OK: boolean);
private
public end;
var
Daemon1: TDaemon1;
Log: TextFile;
implementation
procedure RegisterDaemon;
begin
RegisterDaemonClass(TDaemon1);
end; {$R *.lfm}
procedure TDaemon1.DataModuleExecute(Sender: TCustomDaemon);
begin
while Self.Status = csRunning do
begin
sleep(1000);
WriteLn(Log, datetimetostr(Now));
Flush(Log);
LogMessage(datetimetostr(Now));
end;
end;
procedure TDaemon1.DataModuleShutDown(Sender: TCustomDaemon);
begin
WriteLn(Log, 'Shutdown');
Flush(Log);
end;
procedure TDaemon1.DataModuleStart(Sender: TCustomDaemon; var OK: boolean);
begin
OK := True;
WriteLn(Log, 'Start');
Flush(Log);
end;
procedure TDaemon1.DataModuleStop(Sender: TCustomDaemon; var OK: boolean);
begin
OK := True;
WriteLn(Log, 'Stop');
Flush(Log);
end;
initialization
RegisterDaemon;
AssignFile(Log, 'msaplog.txt');
Rewrite(Log);
end.
Si bien el servicio se instala y corre, no registra cuando el servicio se inicia, detiene o apaga como esta programado. Cada que se inicia el servicio crea el archivo TXT pero no anota nada en él.
Agradecere cualquier ayuda que puedan brindarme, ya que llevo semanas con esto y no puedo hacer que funcione el servicio correctamente.
Gracias.