Jag gjorde ett windowsprogram som funkar (inga ambitioner på att vara nyttigt eller buggfritt :-))
//hämtar services och bind till en listbox
protected void RefreshService()
{
services = ServiceController.GetServices();
this.servicelistbox.DisplayMember = "DisplayName";
this.servicelistbox.DataSource = services;
}
//Visa info i textboxar
private void servicelistbox_SelectedIndexChanged(object sender, System.EventArgs e)
{
ServiceController controller = (ServiceController)servicelistbox.SelectedItem;
this.servicenamn.Text = controller.DisplayName;
this.servicetyp.Text= controller.ServiceType.ToString();
this.servicestatus.Text = controller.Status.ToString();
this.servicenamn2.Text= controller.ServiceName.ToString();
}
//reagera på knapptryckningar, starta, stoppa, pausa, och fortsätt
private void buttonCommand_Click(object sender, System.EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
ServiceController controller = (ServiceController)servicelistbox.SelectedItem;
if(sender == this.startknapp)
{
if(controller.Status == ServiceControllerStatus.Stopped)
{
controller.Start();
controller.WaitForStatus(ServiceControllerStatus.Running);
}
}
else if(sender == this.stopknapp)
{
if(controller.Status != ServiceControllerStatus.Stopped)
{
controller.Stop();
controller.WaitForStatus(ServiceControllerStatus.Stopped);
}
}
else if(sender == this.pauseknapp)
{
if(controller.Status == ServiceControllerStatus.Running)
{
controller.Pause();
controller.WaitForStatus(ServiceControllerStatus.Paused);
}
}
else if(sender == this.fortsättknapp)
{
if(controller.Status == ServiceControllerStatus.Paused)
{
controller.Continue();
controller.WaitForStatus(ServiceControllerStatus.Running);
continueService();
}
}
int index = servicelistbox.SelectedIndex;
RefreshService();
servicelistbox.SelectedIndex = index;
Cursor.Current = Cursors.Default;
}