Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-06-2012
Joviali Joviali is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 0
Joviali Va por buen camino
Crear un servicio en delphi

Buenas

He modificado el codigo por esto:
Código Delphi [-]
procedure Tsv_actualiza.temporizadorTimer(Sender: TObject); 
begin  
  if Not procesoenEjecucion then     
  begin                 
    WinExec('calc',SW_SHOWNORMAL);     
  end; 
end;  

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

Lo unico que hago es lanzar la calculadora, pero cuando ejecuto el servicio no se lanza la calculadora sin embargo en el administrador de tares aparece en memoria el proceso.¿por que no se ejucuta con normalidad?.Si me creo un servicio y lanzo el comando:
Código Delphi [-]
WinExec('calc',SW_SHOWNORMAL);
se ejecuta con normalidad.

En definitiva lo que busco es crear un servicio donde lance una aplicacion si no esta ejecutada y lo haga repetitivamente.

Pd. no consigo resaltar sintaxis en delphi , me dice que no tengo permisos.

Última edición por Casimiro Notevi fecha: 23-06-2012 a las 21:11:00.
Responder Con Cita
  #2  
Antiguo 23-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 24-06-2012
Avatar de heroe
heroe heroe is offline
Miembro
 
Registrado: may 2006
Ubicación: Cartago, Costa Rica
Posts: 45
Poder: 0
heroe Va por buen camino
Otra opción

Otra opción, y por cierto más sencilla es usar un componente Timer. En el evento OnTimer puedes poner tu código que se vería algo así:
Código Delphi [-]
 If Timer1.Interval = 1000 then
 begin
 if Not procesoenEjecucion then     
  begin                 
    WinExec('calc',SW_SHOWNORMAL);     
  end;
 end;

Recuerda que el Interval esta expresado en milisegundos
__________________
Nada es parasiempre.
Responder Con Cita
  #4  
Antiguo 24-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Joviali Ver Mensaje
Pd. no consigo resaltar sintaxis en delphi , me dice que no tengo permisos.
La primera vez que leo algo como eso , avisa si vuelve a ocurrir en otro mensaje que escribas.
Responder Con Cita
  #5  
Antiguo 24-06-2012
Joviali Joviali is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 0
Joviali Va por buen camino
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;
Responder Con Cita
  #6  
Antiguo 24-06-2012
Joviali Joviali is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 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
  #7  
Antiguo 25-06-2012
Avatar de heroe
heroe heroe is offline
Miembro
 
Registrado: may 2006
Ubicación: Cartago, Costa Rica
Posts: 45
Poder: 0
heroe Va por buen camino
Thumbs up Aplicación Normal

Tal vez no te aclare bien, lo que yo decía era que te olvidaras del servicio y crearás una aplicación normal de windows y en ella usaras el componente Timer.
__________________
Nada es parasiempre.
Responder Con Cita
  #8  
Antiguo 28-06-2012
Joviali Joviali is offline
Miembro
 
Registrado: may 2006
Posts: 22
Poder: 0
Joviali Va por buen camino
Buenas tardes, al final lo hecho con un timer desde la aplicación , gracias por tu aporte.
Responder Con Cita
Respuesta


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
crear servicio(daemon) en lazarus n03l Lazarus, FreePascal, Kylix, etc. 7 20-06-2012 19:11:41
Crear un servicio Aldo OOP 5 04-03-2008 18:21:40
crear servicio con formulario mierda API de Windows 4 20-12-2006 13:43:57
Crear Servício altp Varios 5 26-09-2006 17:53:05
Crear Servicio WEB y publicarlo en TOMCAT Khelma Internet 0 26-04-2005 14:11:21


La franja horaria es GMT +2. Ahora son las 08:47:10.


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
Copyright 1996-2007 Club Delphi