Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Остановка и запуск сервисов

Автор: 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 World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay