Ver Mensaje Individual
  #1  
Antiguo 01-02-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Sobre la función StartService y sus parámetros

Hola,

Existe en la unidad "WinSvc" una función de nombre "StartService". De la documentación en la ayuda de Win32:

Código:
BOOL StartService(
    SC_HANDLE hService,    // handle of service 
    DWORD dwNumServiceArgs,    // number of arguments 
    LPCTSTR *lpServiceArgVectors     // address of array of argument string pointers  
   );
Es el caso que el segundo y tercer parámetros son opciones, puesto que acaso el Servicio a iniciar no los requiere. En este caso "dwNumServiceArgs" ha de valer "0" y "lpServiceArgVectors" ser "nulo". En Delphi el asunto quedaría de este modo, pues:

Código Delphi [-]
begin
   {...}
   StartService(hService, 0, nil);
end;

Ahora bien, suponiendo que un determinado Servicio requiera de algún parámetro... ¿cómo se los haríamos llegar? O sea, no entiendo cómo trabajar con el parámetro de tipo "lpServiceArgVectors" en la función "StartService".

Entiendo que es un "puntero" lo que hay que pasar a la función, y de hecho podemos hacer algo así:

Código Delphi [-]
var
  {...}
  args: PChar;
begin
    {...}
   args := 'unparametro';
    StartService(hService, 0, args);
 end;

O como mucho se me ocurre esto:

Código Delphi [-]
var
  {...}
  args: PChar;
begin
    {...}
   args := 'unparametro';
    StartService(hService, 1, args);
 end;

Que acaso sea algo más acercado que lo anterior, porque al menos aquí indicamos que se le envía un parámetro al Servicio... pero, haciendo esto no podemos enviar más de un parámetro al Servicio (si es que funciona siquiera el que intentamos enviar, porque aunque "compila" no he podido probarlo de veras), y además de no poder enviar más parámetros en realidad es que estamos obviando el tipo "lpServiceArgVectors"...

¿Qué se os ocurre? ¿Alguien utilizó alguna vez el tipo "lpServiceArgVectors"? Disculpad el royo... se ve que la síntesis (de cualquier tipo) no es lo mío... ¡y gracias de antemano pataliebres!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita