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!
