Ver Mensaje Individual
  #5  
Antiguo 25-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Como bien dice roman cuando termina el evento OnExecute también termina el servicio. Así que tienes 2 posibilidades, crear un bucle:
Código Delphi [-]
procedure TService1.ServiceExecute(Sender: TService);
begin
  while not Terminated do
  begin
    // Aquí reproduzco un pitido, tu haz lo que quieras 
    Windows.Beep(500,100);
    Sleep(1000);
    ServiceThread.ProcessRequests(FALSE);
  end;
end;
La otra opción es no usar el método execute para nada. Es decir activar el timer en el evento OnStart y hacer lo que quieras en el evento del timer. Es muy importante no utilizar el evento OnExecute, sino volveremos a la situación anterior:
Código Delphi [-]
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
  Timer1.Enabled:= TRUE;
end;

procedure TService1.Timer1Timer(Sender: TObject);
begin
  Windows.Beep(500,100);
end;
Responder Con Cita