Eu acho que algo assim funcionaria:
Adicione System.ServiceProcess
às referências do seu projeto (está na guia .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: também existe um método sc.WaitforStatus()
que leva o status desejado e o tempo limite, nunca o usou, mas pode atender às suas necessidades.
Editar: depois de obter o status, para obter o status novamente, você precisará ligar sc.Refresh()
primeiro.
Referência: objeto ServiceController no .NET.