如何在delphi启动/停止/检系统服务。比如有个服务,性能不够稳定。经常停止服务。那么我要通过程序来启动该服务。请不要说用net start ServerName来启动。这样的启动方式不容易控制。比如无法返回启动成功了等信息。

解决方案 »

  1.   

    procedure Tmain.guanbirtuservice;
    begin
      hService:=OpenService(hscmanager,Pchar('Service'),SERVICE_ALL_ACCESS);
      if hService>=0 then
      begin
    //    showmessage('无法打开该Service');
    //    exit;
        QueryServiceStatus(hService,returnstatus);
        if returnstatus.dwCurrentState=SERVICE_RUNNING then
          ControlService(hService,SERVICE_CONTROL_STOP,returnstatus);
        CloseServiceHandle(hService);//关闭该Service
      end;
    end;procedure Tmain.qidongrtuservice;
    var
      lpServiceArgVectors:Pchar;
    begin
      hService:=OpenService(hscmanager,Pchar('Service'),SERVICE_ALL_ACCESS);
      if hService>=0 then
      begin
    //    showmessage('无法打开该Service');
    //    exit;
        QueryServiceStatus(hService,returnstatus);
        //查看该Service的状态    if returnstatus.dwCurrentState=SERVICE_STOPPED  then
          StartService(hService,0,lpServiceArgVectors);    CloseServiceHandle(hService);//关闭该Service
      end;
    {  QueryServiceStatus(hService,returnstatus);
      //查看该Service的状态  if returnstatus.dwCurrentState=SERVICE_STOPPED  then
        StartService(hService,0,lpServiceArgVectors);  CloseServiceHandle(hService);//关闭该Service}end;
      

  2.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
     Memo1 : TMemo;
    begin
    //  ServiceGetList('', SERVICE_WIN32, SERVICE_STATE_ALL, lbServices1.Items);
      try
        Memo1:=TMemo.create(self);
        Memo1.Visible:=false;
        Memo1.Parent:=self;
        ServiceGetList('', SERVICE_WIN32, SERVICE_STATE_ALL, Memo1.Lines);
        memo.Lines.Text:=memo1.Text;
    {    if memo1.Lines.IndexOf('RTUService')>=0 then
        begin
          Memo.Lines.Text:=memo1.Text;
        end; }
      except
        freeandnil(Memo1);
      end;end;
      

  3.   

    uses WinSvc;  public
        hscmanager,hService:SC_HANDLE;
        returnstatus:TServiceStatus;
      

  4.   

    呵呵,网上N多例子的http://lysoft.7u7.net
      

  5.   

    cdsgajxlp(起名很难) :怎么我测试不了!
      

  6.   

    cdsgajxlp(起名很难) :我测试了。在delphi7.0下。win2000pro。结果没有成功。启动和关闭都没有成功。