/// <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());
 }