Hola, encontramos la solución a tu interrogante, continúa leyendo y la hallarás un poco más abajo.
Solución:
Supongo que algo como esto funcionaría:
Agregar System.ServiceProcess
a las referencias de su 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 adaptarse a sus necesidades.
Editar: una vez que obtenga el estado, para obtener el estado nuevamente, deberá llamar sc.Refresh()
primero.
Referencia: objeto ServiceController en .NET.
Aquí obtiene todos los servicios disponibles y su estado en su máquina local.
ServiceController[] services = ServiceController.GetServices();
foreach(ServiceController service in services)
Console.WriteLine(service.ServiceName+"=="+ service.Status);
Puede comparar su servicio con la propiedad service.name dentro del bucle y obtener el estado de su servicio. Para obtener más información, visite http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx también http://msdn.microsoft.com/en-us/library/microsoft.windows.design .servicemanager(v=vs.90).aspx
Nos encantaría que puedieras comunicar esta crónica si lograste el éxito.