除了用net stop 'ddd'   有没有API可以停止一个服务啊。

解决方案 »

  1.   

    ZT:unit Unit1; interfaceuses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,Winsvc;type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    schService:SC_HANDLE;
    schSCManager:SC_HANDLE;
    ssStatus:TServiceStatus;
    { Private declarations }
    public
    { Public declarations }
    end;var
    Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
    schService:=OpenService(schSCManager,'alerter',SERVICE_ALL_ACCESS);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    CloseServiceHandle(schService);
    CloseServiceHandle(schSCManager);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    Argv:PChar;
    begin
    if StartService(schService,0,Argv) then
    begin
    form1.caption:='Start Service Now ';
    Sleep(1000);
    while (QueryServiceStatus(schService,ssStatus)) do
    begin
    Application.ProcessMessages;
    if ssStatus.dwCurrentState=SERVICE_START_PENDING then
    begin
    form1.caption:=form1.caption+('.');
    Sleep(1000);
    end else break;
    end;
    if ssStatus.dwCurrentState=SERVICE_RUNNING then
    form1.caption:='Service Start Ok'
    else form1.caption:='Service Start Fail';
    end
    else form1.caption:='Service Start Fail';
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    if ControlService(schService,SERVICE_CONTROL_STOP,ssStatus) then
    begin
    form1.caption:='Stopping Service Now ';
    Sleep(1000);
    while (QueryServiceStatus(schService,ssStatus)) do
    begin
    Application.ProcessMessages;
    if ssStatus.dwCurrentState=SERVICE_STOP_PENDING then
    begin
    form1.caption:=form1.caption+('.');
    Sleep(1000);
    end else break;
    end;
    if ssStatus.dwCurrentState=SERVICE_STOPPED then
    form1.caption:='Service Stop Ok'
    else form1.caption:='Service Stop Fail';
    end
    else form1.caption:='Service Stop Fail';
    end;
    end.把上面的alerter改成你要启动或停止的服务就行了_____________________
    comment by Liu Yang
    http://lysoft.7u7.net
    QQ Group: 7858482