我有一个名为DataCapture.dpr的基本文件,
program DataCapture;
内部。
然后我必须给服务本身加上另一个名称,以避免名称冲突:
TDataCaptureService = class(TService)
现在,当我注册它时,该服务将在“ DataCaptureService”注册表项下注册,但是我想要:
如何实现?
答案 0 :(得分:6)
防止命名冲突仅由IDE在设计时实施。为了避免这种情况,您只需在运行时设置服务名称即可,例如在OnCreate
事件中:
Name := 'DataCapture';
或者最好是重写DoCreate
方法,因为OnCreate
用于外部事物:
procedure TDataCaptureService.DoCreate();
begin
Name := 'DataCapture';
inherited;
end;
答案 1 :(得分:1)
您无法实现所有三个愿望-您必须牺牲一些东西。在这种情况下,将项目的名称更改为其他名称,然后在生成后将EXE名称更改为所需名称。 Delphi编译器根本不允许相同的标识符使用两次。
也有另一种选择。默认情况下,从Delphi编译的服务具有自己的/install
/uninstall
参数,您可以调用它们,它们在内部将Name
用于服务。但是,您可以忽略它,而使用所需的任何名称通过WinAPI在外部进行安装(从而为您的新名称生成一个对应的注册表项)。