/// <summary> /// Find related services /// </summary> internal void findRelatedServices() { ServiceController theService = new ServiceController(ServiceName); foreach (System.ServiceProcess.ServiceController service in theService.ServicesDependedOn) { ServiceWrapper serviceInformation = new ServiceWrapper(service.ServiceName); DependedOnServices.Add(serviceInformation); } foreach (System.ServiceProcess.ServiceController service in theService.DependentServices) { ServiceWrapper serviceInformation = new ServiceWrapper(service.ServiceName); serviceInformation.findRelatedServices(); DependentServices.Add(serviceInformation); } }
private void updateServiceLists() { lsvResumeServices.Items.Clear(); foreach (ServiceWrapper serviceInformation in PowerStateMonitor.Instance().ResumeEventRegisteredServices.Values) { ServiceWrapper newServiceInformation = new ServiceWrapper(serviceInformation.ServiceName); ListViewItem listViewItem = new ListViewItem(new string[] { newServiceInformation.ServiceName, newServiceInformation.Status.ToString(), newServiceInformation.DisplayName }); lsvResumeServices.Items.Add(listViewItem); } lsvSuspendServices.Items.Clear(); foreach (ServiceWrapper serviceInformation in PowerStateMonitor.Instance().SuspendEventRegisteredServices.Values) { ServiceWrapper newServiceInformation = new ServiceWrapper(serviceInformation.ServiceName); ListViewItem listViewItem = new ListViewItem(new string[] { newServiceInformation.ServiceName, newServiceInformation.Status.ToString(), newServiceInformation.DisplayName }); lsvSuspendServices.Items.Add(listViewItem); } }
private void stopToolStripMenuItem_Click(object sender, EventArgs e) { SimpleLogger.Instance().WriteLine("User has clicked the \"Stop\" button"); ServiceWrapper theService = new ServiceWrapper(selectedServiceName); try { theService.stop(); } catch (InvalidOperationException ex) { MessageBox.Show("Unable to stop service '" + theService.DisplayName + "' (" + theService.ServiceName + ")\n" + ex.Message + "\n" + ex.InnerException.Message + ""); } updateServiceLists(); }
/// <summary> /// /// </summary> /// <param name="theService"></param> /// <param name="sb"></param> /// <param name="depth"></param> private static void __display(ServiceWrapper theService, StringBuilder sb, int depth = 0) { sb.Append('\t', depth); sb.AppendLine("Service: " + theService.ServiceName + " (" + theService.DisplayName + ")"); depth++; sb.Append('\t', depth); sb.AppendLine("DependedOnServices: "); if (theService.DependedOnServices.Count > 0) { foreach (ServiceWrapper service in theService.DependedOnServices) { __display(service, sb, depth + 1); } } sb.Append('\t', depth); sb.AppendLine("DependentServices: "); if (theService.DependentServices.Count > 0) { foreach (ServiceWrapper service in theService.DependentServices) { __display(service, sb, depth + 1); } } }
/// <summary> /// Register a new service to be started or stopped upon system resume or suspend event /// </summary> /// <param name="serviceName"></param> internal void registerResumeEvent(String serviceName) { ServiceWrapper serviceInformation = new ServiceWrapper(serviceName); ResumeEventRegisteredServices.Add(serviceName, serviceInformation); SimpleLogger.Instance().WriteLine("New service registered for Resume events: " + serviceInformation.ToString()); }