Club Delphi  
    Paypal   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 12-11-2004
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 23
Enan0 Va por buen camino
nooo nada de ventanas ni nada es un servicio!
ahora voy intentar postear el codigo yso delphi 6, ha otra cosa como se hace para instalarlo?
Bueno todo el codigo completo!!!! yo creo que no tiene ningun error. porque lo probe bajandole el tiempo al timer y funciona todo ok!! pero a ese tiempo se cierra!!!
una PERSONA DEL FORO me hizo unas modificaciones y el de el funciona.. todabia no lo he visto.. pero quiero saber mi error.. y despues como hago apara instalarlo!! saludos

Código:
 
 
 unit CompactRep;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
   ExtCtrls,zip, registry, JRO_TLB;
 
 type
   TCompactarYreparar = class(TService)
 	TimerSql: TTimer;
 	procedure TimerSqlTimer(Sender: TObject);
 	procedure ServiceBeforeInstall(Sender: TService);
 	procedure ServiceStart(Sender: TService; var Started: Boolean);
 	procedure ServiceStop(Sender: TService; var Stopped: Boolean);
 
   private
 	{ Private declarations }
   public
 	function GetServiceController: TServiceController; override;
 	function LeerPath:String;
 	function Zipear:boolean;
 	procedure reparar(ruta:string);
 	{ Public declarations }
   end;
 
 var
   CompactarYreparar: TCompactarYreparar;
 
 implementation
 
 {$R *.DFM}
 
 procedure ServiceController(CtrlCode: DWord); stdcall;
 begin
   CompactarYreparar.Controller(CtrlCode);
 end;
 
 function TCompactarYreparar.GetServiceController: TServiceController;
 begin
   Result := ServiceController;
 end;
 
 procedure TCompactarYReparar.TimerSqlTimer(Sender: TObject);
 begin
  zipear; //esto va adentro del if!!!!
    if (formatdatetime('dddd',now)='Domingo')and(formatdatetime('hh:mm AM/PM',now)='02:00 AM') then
 	  begin
 
 	  end;
 end;
 
 
 
 function TCompactarYreparar.LeerPath:string;
 Var
    Registry:TRegistry;
 
 begin
 	Registry:=TRegistry.Create;
 	Registry.RootKey:=HKEY_LOCAL_MACHINE;
 	if Registry.OpenKey('Software\Radio Frecuencia',False) then
 	   Result:=Registry.ReadString('Path');
 	Registry.Free;
 end;
 
 function TCompactarYreparar.Zipear: boolean;
 var Zip:TZip;
    ruta:String;
 begin
 TRY
    ruta:=LeerPath;
    reparar(ruta);
    if Not DirectoryExists(ruta + 'BackUp\') then
 	  CreateDir(ruta + 'BackUp\');
    Zip:=TZip.create(nil);
    zip.FileSpecList.Add(ruta + 'Base.mdb');
    zip.Filename:=ruta + 'BackUp\' + FormatDateTime('DDMM_hhmm',now)+'.ZIP';
    zip.Add;
    if FileExists(ruta + 'Base.mdb') then
 	  DeleteFile(ruta + 'Base.mdb');
    CopyFile(pchar(ruta + 'basenueva.mdb'),Pchar(ruta+'Base.mdb'),false);
    if FileExists(ruta+'basenueva.mdb') then
 	  DeleteFile(ruta+'basenueva.mdb');
    result:=TRUE;
 EXCEPT
    REsult:=FALSE
 END;
 end;
 
 procedure TCompactarYreparar.reparar(ruta:string);
 
  var
  engine: IJetEngine;
  src, dst, path: WideString;
 begin
    // Directio donde se encuentra
    path :=ruta;
    //src: Base de Datos existente con assword antiguo
    src := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + path + 'base.mdb' +
    ';Jet OLEDB:Database Password=basepdt6146';
    //dst: Base de Datos nueva con password cambiado
    dst := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + path + 'basenueva.mdb' +
    ';Jet OLEDB:Database Password=basepdt6146';
  engine := CoJetEngine.Create();
  engine.CompactDatabase(src, dst);
 end;
 
 
 
 
 procedure TCompactarYreparar.ServiceBeforeInstall(Sender: TService);
 begin
  application.Run;
 end;
 
 
 
 procedure TCompactarYreparar.ServiceStart(Sender: TService;
   var Started: Boolean);
 begin
 application.Run;
 end;
 
 procedure TCompactarYreparar.ServiceStop(Sender: TService;
   var Stopped: Boolean);
 begin
    stopped:=true;
 end;
 
 end.
Responder Con Cita
  #2  
Antiguo 12-11-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 25
__hector Va por buen camino
Mi niño. Si el servicio no esta registrado, es logico que se ejecute una sola vez, como si de una aplicacion trivial se tratase. Creo que para instalarlo basta con especificar el parametro /INSTALL luego del nombre del servicio.

Puedes siempre confirmar que el mismo aparezca entre los servicios en el control panel, o escribiendo net start en el command prompt
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 12-11-2004
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 23
Enan0 Va por buen camino
Hector, Gracias por la info, pero el /INSTALL ya lo habia probado y no me los registra, solo lo ejecuta una vez, no se si tendria que especificar ese parametro dentro de la aplicación y que haga algo mas!!! pero bueno lo desconozco .. Gracias igual!!
Responder Con Cita
  #4  
Antiguo 12-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vamos a ver, mis conocimietos de servicios son prácticamente nulos pero la ayuda de Delphi dice:

Cita:
Empezado por ayuda de Delphi
OnExecute event (TService)

If you are not spawning a new thread to handle individual service requests in an OnStart event handler, this is where you implement the service. When the OnExecute event handler finishes, the service thread terminates. Most OnExecute event handlers contain a loop that calls the service thread’s ProcessRequests method so that other service requests are not locked out.
¿Dónde está el evento OnExecute? Sin un loop como el que indica la ayuda y el ejemplo que ahí mismo viene, pues parece lógico que el servicio se detenga.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 02:41:58.


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