gpt4 book ai didi

delphi - 是否可以创建 TService 的后代并发布我自己的属性?

转载 作者:行者123 更新时间:2023-12-03 15:40:12 26 4
gpt4 key购买 nike

在 Delphi 中创建了一些不同的服务后,我意识到 TService 缺少服务应用程序应具备的一些必要功能,例如日志记录、异常处理和注册表中的“描述”属性。

我想知道我是否可以制作自己的服务 shell,例如 TJDService,它是从 TService 继承的,但有一些额外的东西,例如 '对象检查器中显示的描述属性。我可以像这样制作自己的服务外壳吗?我知道我可以创建自己的“默认项目”,继承自 TService,但这包括我与任何新项目的所有代码。

创建新服务时,它应该如下所示:

unit Unit1;

interface

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

type
TJDService1 = class(TJDService)
private

public
function GetServiceController: TServiceController; override;
end;

var
JDService1: TJDService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
JDService1.Controller(CtrlCode);
end;

function TJDService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;

end.

与典型服务相同,但使用我的 TJDService 而不仅仅是 TService

最佳答案

简单的问题,简单的答案。是的,你可以这样做。我自己正是这样做的,以便在我公司代码库中实现的各种服务之间共享代码。

RegisterCustomModule 是使 Description 属性显示在对象检查器中的方法。话虽如此,我认为在对象检查器中设置这些服务属性的能力并没有那么有值(value)。我认为在代码中运行时设置它们是完全可以接受的,但这个决定取决于个人喜好。

即使您使用RegisterCustomModule 使 IDE 知道您的服务类,默认的新服务应用程序也不会使用您的服务类。您可以根据需要自定义默认服务应用程序,然后将其保存到 Object Repository .

我的回答here展示了我如何实现一个可以作为服务或标准桌面进程运行以进行调试的应用程序。

关于delphi - 是否可以创建 TService 的后代并发布我自己的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com