Ver Mensaje Individual
  #6  
Antiguo 24-06-2012
Joviali Joviali is offline
Miembro
 
Registrado: may 2006
Posts: 22
Reputación: 0
Joviali Va por buen camino
Cita:
Empezado por Joviali Ver Mensaje
Buenas , Heroe he probado lo que me has comentado pero como es un servicio, me dice que no hay nada para ejecutar.Te paso el codigo fuente:
unit servicio;

Código Delphi [-]
unit servicio;

interface

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

type
  Tsv_actualiza = class(TService)
    temporizador: TTimer;
    procedure temporizadorTimer(Sender: TObject);
    procedure ServiceExecute(Sender: TService);
  private
    { Private declarations }
  public
    function GetServiceController: TServiceController; override;
    function procesoenEjecucion: Boolean;
    { Public declarations }
  end;

var
  sv_actualiza: Tsv_actualiza;

implementation

{$R *.DFM}

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

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

procedure Tsv_actualiza.temporizadorTimer(Sender: TObject);
begin
    if not procesoenEjecucion then
         WinExec('calc',0);
end;

procedure Tsv_actualiza.ServiceExecute(Sender: TService);
begin
  temporizador.Enabled := True;
 while not Terminated do
    ServiceThread.ProcessRequests(false);
  temporizador.Enabled := False;

end;


function Tsv_actualiza.procesoenEjecucion: Boolean;
var
  Proceso : TProcessEntry32;
  ProcessHandle : THandle;
  Sproceso   : Boolean;
  Nproceso : String;
begin
  Result := False;
  Proceso.dwSize := SizeOf(TProcessEntry32);
  ProcessHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if Process32First(ProcessHandle, Proceso) then
  begin
    Nproceso:= String(Proceso.szExeFile);
    repeat Sproceso := Process32Next(ProcessHandle, Proceso);
      Nproceso:= String(Proceso.szExeFile);
      if Nproceso = 'calc.exe' then
        Result := True;
    until not Sproceso;
  end;
  CloseHandle(ProcessHandle);
end;

end.
Responder Con Cita