Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Programa SERVICIO WINDOWS (https://www.clubdelphi.com/foros/showthread.php?t=20913)

marceloalegre 29-04-2005 13:22:57

Programa SERVICIO WINDOWS
 
Buenos dias:
En esta ocasion, les molesto para saber si alguien conoce como hacer que mi programa sea un servicio (como los que estan en services .msc de windows, de los que se pueden poner automatico, manual, detenido...)

y ademas alguien sabe como protegerlo de que no lo puedan matar a mi programa? Algo como Ej:
Si quiero matar el proceso svchost.exe me dice: "la operacion no se puede termina, acceso denegado" (lo pueden ver en ej: xp y 2000)
o no se.. alguna otra forma de que no puedan matar el proceso de mi programa, desde ya gracias a todos!

hermes_32 29-04-2005 14:29:53

Para que tu aplicacion sea un servicio inicia un nuevo proyecto asi:

File -> New -> Other -> Service Application

Este será el aspecto:

Código Delphi [-]
unit Unit1;

interface

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

type
  TService1 = class(TService)
  private
    { Private declarations }
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

var
  Service1: TService1;

implementation

{$R *.DFM}

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

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

end.

Ahora tienes que implementar tú los métodos:

Código Delphi [-]
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);

Me imagino que querrás que realice cada cierto tiempo una acción. Pues no puedes poner un Timer así por las buenas. Debes crearlo:

Código Delphi [-]
  .
  .
  .
    private
      { Private declarations }
      Timer: TTimer; 
  .
  .
  .

Y al comenzar el servicio:

Código Delphi [-]
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    begin
      Timer:=TTimer.Create(nil);
      Timer.Interval := Intervalo;
      Timer.OnTimer:=TimerOnTimer; //aquí la acción 
    end;

Y al terminar el servicio:

Código Delphi [-]
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    begin
     Timer.Free;
     Timer:=nil;      
    end;

Bueno esto es mas o menos el trabajo. Espero que te ayude.

delphi.com.ar 29-04-2005 14:32:11

Te recomiendo investigar la clase TService, que fue creada para este motivo. En pocos paso: File\New\Other\Application Service y ya tienes un servicio!

Saludos!

marceloalegre 29-04-2005 20:13:45

Excelente :) mi servicio funciona de maravillas GRACIAS A TODOS!

JXJ 10-11-2005 19:26:45

tenog unas dudas.

¿para que sirven los servicios?

¿cuales son sus usos?

por que se que el apache y el mysql se pueden instalar
como servicios.

no encuentro para que usar servicios. ni en que usarlos
que no sea en programas como los arriba mencionados

¿en que han usado servicios,?

marceloalegre 10-11-2005 19:57:26

para muchas cosas..
 
Podes aprovechar para usarlos cuando queres que se cargue algo sin importar en que sesion estes parado, o sea antes de que pongas user y pass cuando inicias la pc por ejemplo en un windows 2000 hacer que la maquina ejecute un programa que haga algo que te interese hacer en esta instancia...

Por ejemplo no se un servicio para usar de antivirus, emm escuchar en algun puerto determinado y +++

djemix 13-02-2008 08:52:51

interactuación
 
Todo esto me parece super interesante, pero mi problema no es un servicio que haga cosas cada cierto tiempo, sino que yo desde mi aplicación windows pueda interactuar con el.

¿Como me puedo comunicar con el servicio? En plan que le pregunte algo y me responda con otra cosa.

Espero que me podais ayudar!! Grasiassssssss


La franja horaria es GMT +2. Ahora son las 09:49:54.

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