Si notas algunos prohrams que dependen de servicios se ejecutan de la siguiente manera por ejemplo kavsperky se llama asi
C:\Archivos de programa\Kaspersky Lab\avp.exe /waitservice
Yo tengo un progrma que hace lo mismo y cuando lo llamo desd el run de windows osea cuando arranca el sistema operativo. si veo que esta el parametro realizo un ciclo repeat durente un tiempo o hasta que el serviocioeste levantado.
Código Delphi
[-]
Function VerficicarServicio(Srv: String): Boolean;
Begin
End;
Procedure xxxxxxx;
Var
ServicioCorriendo: Boolean;
TiempoAgotado: Boolean;
Begin
repeat
ServicioCorriendo := VerficicarServicio('xxxxx');
Until ServicioCorriendo or TiempoAgotado;
End;