public ServiceControlForm() {

 //

 // Требуется для поддержки Windows Form Designer

 //

 InitializeComponent();

 RefreshServiceList();

}

protected void RefreshServiceList() {

 services = ServiceController.GetServices();

 listBoxServices.DisplayMember = 'DisplayName';

 listBoxServices.DataSource = services;

}

Теперь все службы Windows выводятся в окне списка и можно получить данные о каждой службе. Класс ServiceController имеет следующие свойства для данных о службе:

Свойства ServiceController
CanPauseAndContinue Если службе можно послать запрос pause и continue, то возвращается true.
CanShutdown true, если служба имеет программу обработки для выключения системы.
CanStop true, если службу можно остановить.
DependentServices Возвращает совокупность подчиненных служб. Если служба остановлена, то все подчиненные службы заранее останавливаются.
ServicesDependentOn Возвращаем совокупность служб, которые зависят от этой службы.
DisplayName Имя, которое должно выводиться для этой службы.
MachineName Имя машины, на которой выполняется эта служба.
ServiceName Имя службы.
ServiceType Служба может выполняться внутри общего процесса, где более одной службы используют один и тот же процесс (Win32ShareProcess), или выполняться так, что существует только одна служба внутри процесса (Win32OwnProcess). Если служба может взаимодействовать с рабочим столом компьютера, то тип будет InteractiveProcess.
Status Статус службы. Статус может быть running, stopped paused или в некотором промежуточном режиме, таком как start pending, stop pending и т.д.

В рассматриваемом приложении используются свойства DisplayName, ServiceName, ServiceType и Status для вывода данных о службе, а также CanPauseAndContinue и CanStop для включения и отключения кнопок Pause, Continue и Stop.

Метод OnSelectedIndexChanged() является методом обработки для окна списка. Он вызывается, когда пользователь выбирает службу в окне списка. В методе OnSelectedIndexChanged() внешнее имя и имя свойства задаются непосредственно с помощью свойств класса ServiceController. Статус и тип не могут просто задаваться, так как должна выводиться строка вместо числа, которое возвращает класс ServiceController. Метод SetServiceStatus() является вспомогательной функцией, просматривающей перечисление свойств Status для выводa строки статуса, а также включает и отключает кнопки. GetServiceTypeName() создает имя типа службы. ServiceType мы получаем из ServiceController.ServiceType представляет множество флажков, которые могут комбинироваться с помощью побитового оператора ИЛИ. Бит InteractiveProcess может задаваться вместе с Win32OwnProcess и Win32ShareProcess. Необходимо проверить, задан ли бит InteractiveProcess прежде чем переходить к проверке других значений:

protected string GetServiceTypeName(ServiceType type) {

 string serviceType = '';

 if ((type & ServiceType.InteractiveProcess) != 0) {

  serviceType = 'Interactive ';

  type -= ServiceType.InteractiveProcess;

 }

 switch (type) {

 case ServiceType.Adapter:

  serviceType -= 'Adapter';

  break;

 case ServiceType.FileSystemDriver:

 case ServiceType.KernelDriver:

 case ServiceType.RecognizerDriver:

  ServiceType += 'Driver';

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ОБРАНЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату