你需要将其替换为你要操作的现实功绩的称呼

你需要将其替换为你要操作的现实功绩的称呼

​要在 Delphi 中操作 Windows 功绩,不错使用  TServiceManager  组件。以下是一个示例,展示如何开启、关闭、重启和查询 Windows 功绩:

uses

  System.SysUtils, System.Classes, Winapi.Windows, Winapi.Messages, Vcl.SvcMgr;

procedure StartService(const AServiceName: string);

var

  ServiceManager: TServiceManager;

  Service: TService;

begin

  ServiceManager := TServiceManager.Create(nil);

  try

    ServiceManager.Connect;

    Service := ServiceManager.Services[AServiceName];

    if Assigned(Service) then

    begin

      if Service.Status <> TServiceStatus.Running then

      begin

        Service.Start;

        Service.WaitForStatus(TServiceStatus.Running, 5000); // 最多恭候 5 秒钟

        if Service.Status <> TServiceStatus.Running then

          raise Exception.Create('启动功绩失败');

      end

      else

        raise Exception.Create('功绩也曾在开动');

    end

    else

      raise Exception.Create('找不到指定的功绩');

  finally

    ServiceManager.Free;

  end;

end;

procedure StopService(const AServiceName: string);

var

  ServiceManager: TServiceManager;

  Service: TService;

begin

  ServiceManager := TServiceManager.Create(nil);

  try

    ServiceManager.Connect;

    Service := ServiceManager.Services[AServiceName];

    if Assigned(Service) then

    begin

      if Service.Status <> TServiceStatus.Stopped then

      begin

        Service.Stop;

        Service.WaitForStatus(TServiceStatus.Stopped,平乐县凯为颜料有限公司 5000); // 最多恭候 5 秒钟

        if Service.Status <> TServiceStatus.Stopped then

          raise Exception.Create('罢手功绩失败');

      end

      else

        raise Exception.Create('功绩也曾罢手');

    end

    else

      raise Exception.Create('找不到指定的功绩');

  finally

    ServiceManager.Free;

  end;

end;

procedure RestartService(const AServiceName: string);

begin

  StopService(AServiceName);

  StartService(AServiceName);

end;

function QueryServiceStatus(const AServiceName: string): TServiceStatus;

var

  ServiceManager: TServiceManager;

  Service: TService;

begin

  ServiceManager := TServiceManager.Create(nil);

  try

    ServiceManager.Connect;

    Service := ServiceManager.Services[AServiceName];

    if Assigned(Service) then

      Result := Service.Status

    else

      raise Exception.Create('找不到指定的功绩');

  finally

    ServiceManager.Free;

  end;

end;

// 示例用法

begin

  try

    StartService('MyService'); // 启动指定的功绩

    Writeln('功绩已启动');

    // 恭候一段时辰, 南通雅美诺纺织品有限公司然后罢手功绩

    Sleep(5000);

    StopService('MyService');

    Writeln('功绩已罢手');

    // 恭候一段时辰, 贝发集团股份有限公司然后重启功绩

    Sleep(5000);

    RestartService('MyService');

    Writeln('功绩已重启');

    // 查询功绩情景

    Writeln('功绩现时情景: ', QueryServiceStatus('MyService'));

  except

    on E: Exception do

      Writeln('操处事迹失败: ' + E.Message);

  end;

  Write('按 Enter 键退出...');

  Readln;

end.

在上头的示例中,纺织加工咱们使用  TServiceManager  组件来统一到功绩死心科罚器,并通过  Services  属性得到特定的功绩。然后,咱们不错使用  Start 、 Stop  和  WaitForStatus  设施来启动、罢手和恭候功绩情景的变化。 QueryServiceStatus  函数用于查询功绩确现时情景。

请防卫,上述示例中的  MyService  是一个占位符功绩名,你需要将其替换为你要操作的现实功绩的称呼。此外纺织加工,确保在扩充操作时处理可能的相配情况,并证实需要进行谬妄处理或输出合适的信息。

本站仅提供存储功绩,扫数内容均由用户发布,如发现存害或侵权内容,请点击举报。




Powered by 首页-利康艾颜料有限公司 @2013-2022 RSS地图 HTML地图

Copyright 365建站 © 2013-2024 <"SSWL"> 版权所有