当前位置:首页 > Windows程序 > 正文

Delphi 服务操作

2021-03-22 Windows程序

unit Service;  

      

interface     

  uses Windows,Messages,SysUtils,Winsvc,Dialogs;  

      

  function  StartServices(Const  SvrName:String):Boolean;  

  function  StopServices(Const  SvrName:String):Boolean;  

  function  QueryServiceStatu(Const SvrName:   String):String;  

  function  CreateServices(Const SvrName,FilePath:String):Boolean;     

  function  DeleteServices(Const SvrName: String):Boolean;     

      

  implementation    

      

  //开启服务     

  function StartServices(Const   SvrName:   String):   Boolean;  

  var     

      a,b:SC_HANDLE;     

        c:PChar;     

  begin     

        Result:=False;     

      

        a:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);     

      

        if a <=then  Exit;     

      

        b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);     

      

        if b <=0  then  Exit;     

            try     

              Result:=StartService(b,0,c);     

              CloseServiceHandle(b);     

              CloseServiceHandle(a);     

        except     

              CloseServiceHandle(b);     

              CloseServiceHandle(a);     

              Exit;     

        end;     

  end;     

      

      

  //停止服务     

  function   StopServices(Const   SvrName:   String):   Boolean;  

  var  

        a,b:   SC_HANDLE;     

        d:   TServiceStatus;     

  begin     

        Result := False;     

      

        a :=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);     

      

        if a <=then Exit;     

      

        b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);     

      

        if b <=0  then  Exit;     

            try     

              Result:=ControlService(b,SERVICE_CONTROL_STOP,d);     

               CloseServiceHandle(a);     

              CloseServiceHandle(b);     

        except     

              CloseServiceHandle(a);     

              CloseServiceHandle(b);     

              Exit;     

        end;     

  end;     

      

      

  //查询当前服务的状态     

  function  QueryServiceStatu(Const   SvrName:   String):   String;     

  var     

        a,b:   SC_HANDLE;     

        d:   TServiceStatus;     

  begin     

        Result := ‘未安装‘;     

      

        a := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);     

      

        if a <=then  Exit;     

      

        b := OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);     

      

        if  b  <= 0  then  Exit;     

            try     

              QueryServiceStatus(b,d);     

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/65435.html