Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Остановка и запуск сервисов

Delphi , Программа и Интерфейс , Процессы и Сервисы

Остановка и запуск сервисов

Автор: Postmaster

- Почему Билл Гейтс избегает интимных отношений с юзерами?
- Потому, что данное действие может быть квалифицировано, как незаконная попытка взять деньги дважды за, собственно говоря, однажды уже оказанный сервис.

Unit1.dfm


object Form1: TForm1
  Left = 192
    Top = 107
    Width = 264
    Height = 121
    Caption = 'Сервис'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object Label1: TLabel
    Left = 2
      Top = 8
      Width = 67
      Height = 13
      Caption = 'Имя сервиса'
  end
  object Button1: TButton
    Left = 4
      Top = 56
      Width = 95
      Height = 25
      Caption = 'Стоп сервис'
      TabOrder = 0
      OnClick = Button1Click
  end
  object Button2: TButton
    Left = 148
      Top = 56
      Width = 95
      Height = 25
      Caption = 'Старт сервис'
      TabOrder = 1
      OnClick = Button2Click
  end
  object Edit1: TEdit
    Left = 0
      Top = 24
      Width = 241
      Height = 21
      TabOrder = 2
      Text = 'Messenger'
  end
end

Unit1.pas


unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Winsvc;

type

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure StopService(ServiceName: string);
    procedure Button2Click(Sender: TObject);
    procedure StartService(ServiceName: string);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var

  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  StopService(Edit1.Text);
end;

procedure TForm1.StopService(ServiceName: string);
var

  schService,
    schSCManager: DWORD;
  p: PChar;
  ss: _SERVICE_STATUS;
begin

  p := nil;
  schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if schSCManager = 0 then
    RaiseLastWin32Error;
  try
    schService := OpenService(schSCManager, PChar(ServiceName),
      SERVICE_ALL_ACCESS);
    if schService = 0 then
      RaiseLastWin32Error;
    try
      if not ControlService(schService, SERVICE_CONTROL_STOP, SS) then
        RaiseLastWin32Error;
    finally
      CloseServiceHandle(schService);
    end;
  finally
    CloseServiceHandle(schSCManager);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  StartService(Edit1.Text);
end;

procedure TForm1.StartService(ServiceName: string);
var

  schService,
    schSCManager: Dword;
  p: PChar;
begin

  p := nil;
  schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if schSCManager = 0 then
    RaiseLastWin32Error;
  try
    schService := OpenService(schSCManager, PChar(ServiceName),
      SERVICE_ALL_ACCESS);
    if schService = 0 then
      RaiseLastWin32Error;
    try
      if not Winsvc.startService(schService, 0, p) then
        RaiseLastWin32Error;
    finally
      CloseServiceHandle(schService);
    end;
  finally
    CloseServiceHandle(schSCManager);
  end;
end;

end.

Программа на Delphi для запуска и остановки Windows-сервисов!

Программа создает простой графический интерфейс с двумя кнопками: "Остановить сервис" и "Запустить сервис". Пользователь может ввести имя сервиса, который он хочет остановить или запустить, в текстовом поле. Когда кнопка нажата, соответствующая процедура вызывается.

Вот разбивка кода:

Form1.dfm: Это файл содержит визуальную схему формы, включая ее компоненты (например, метки, кнопки и текстовое поле).

Unit1.pas: Это файл содержит реализацию процедур формы.

Процедура StopService открывает управляющий процесс сервисов, находит сервис с указанным именем и отправляет команду остановки. Если операция успешна, сервис будет остановлен.

Процедура StartService делает аналогичные шаги, но отправляет команду запуска вместо остановки.

Обратите внимание, что это программное обеспечение использует Windows API (WinSvc) для взаимодействия с сервисами. Функции OpenSCManager, OpenService, ControlService и CloseServiceHandle используются для управления сервисами.

Вот альтернативное решение, используя встроенный компонент Delphi TServiceController:

Создайте новую форму и добавьте две кнопки: "Остановить сервис" и "Запустить сервис". Добавьте текстовое поле, где пользователь может ввести имя сервиса.

В событии OnCreate формы создайте новый экземпляр TServiceController и установите свойство ServiceName в значение из текстового поля. Затем настройте клики кнопок следующим образом:

  • Для кнопки "Остановить сервис": ServiceController.Stop();
  • Для кнопки "Запустить сервис": ServiceController.Start();

Эта APPROACH проще и более удобна, чем использовать Windows API напрямую.

Что касается комментария Билла Гейтса о близких отношениях с пользователями... я думаю, это шутка!

Руководство по остановке и запуску сервисов в Windows с помощью программы на Delphi, которая использует API-интерфейс для управления сервисами.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессы и Сервисы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 01:04:11/0.023627996444702/1