Supongo que algo como esto funcionaría:
Agregue System.ServiceProcess
a sus referencias de proyecto (está en la pestaña .NET).
using System.ServiceProcess;
ServiceController sc = new ServiceController(SERVICENAME);
switch (sc.Status)
{
case ServiceControllerStatus.Running:
return "Running";
case ServiceControllerStatus.Stopped:
return "Stopped";
case ServiceControllerStatus.Paused:
return "Paused";
case ServiceControllerStatus.StopPending:
return "Stopping";
case ServiceControllerStatus.StartPending:
return "Starting";
default:
return "Status Changing";
}
Editar: También hay un método sc.WaitforStatus()
que toma un estado deseado y un tiempo de espera, nunca lo usó, pero puede satisfacer sus necesidades.
Editar: una vez que obtenga el estado, para obtener el estado nuevamente deberá llamar sc.Refresh()
primero.
Referencia: objeto ServiceController en .NET.