Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 10-07-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
✅ CÓDIGO MODIFICADO: Unit1.pas

Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.SvcMgr;

type
  TService1 = class(TService)
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
  private
    FWorkerThread: TThread;
    procedure WriteLog(const cMsg: String);
  public
    function GetServiceController: TServiceController; override;
  end;

var
  Service1: TService1;

implementation

{$R *.dfm}

type
  TWorkerThread = class(TThread)
  protected
    procedure Execute; override;
  end;

procedure TWorkerThread.Execute;
begin
  while not Terminated do
  begin
    TService1(Service1).WriteLog('Thread tick...');
    Sleep(1000); // 1 segundo
  end;
end;

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

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

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
  WriteLog('ServiceStart');
  FWorkerThread := TWorkerThread.Create(False); // false = empieza ya
  Started := True;
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  WriteLog('ServiceStop');
  if Assigned(FWorkerThread) then
  begin
    FWorkerThread.Terminate;
    FWorkerThread.WaitFor;
    FreeAndNil(FWorkerThread);
  end;
  Stopped := True;
end;

procedure TService1.WriteLog(const cMsg: String);
var
  myFile: TextFile;
  cFile: string;
begin
  try
    // Usa ruta sin permisos de usuario
    cFile := 'C:\ServiceLogs\Service_Test.txt';
    ForceDirectories(ExtractFilePath(cFile));
    AssignFile(myFile, cFile);

    if FileExists(cFile) then
      Append(myFile)
    else
      ReWrite(myFile);

    WriteLn(myFile, FormatDateTime('yyyy-mm-dd hh:nn:ss', Now) + ' ' + cMsg);
  finally
    CloseFile(myFile);
  end;
end;

end.

✅ PASOS EXTRAS
Crea la carpeta C:\ServiceLogs manualmente, o dale permisos para que el servicio pueda crearla.

Instala el servicio:

Código:
MyService.exe /INSTALL
Arráncalo desde Servicios de Windows (services.msc).

Mira el archivo de log en C:\ServiceLogs\Service_Test.txt.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TService sancarlos API de Windows 4 12-11-2008 10:14:25
TService y TForm Softweb API de Windows 5 20-10-2008 17:41:01
TService, IB, FB OSKR C++ Builder 0 27-04-2005 11:51:11
Imprimir desde un TService gynch Varios 2 02-04-2004 19:35:23
Imprimir desde un TService gynch Impresión 0 24-03-2004 14:12:16


La franja horaria es GMT +2. Ahora son las 17:39:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi