unit Service.Main;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.SvcMgr,
Vcl.Dialogs;
type
TServiceName =
class( TService )
procedure ServiceCreate( Sender: TObject );
procedure ServiceAfterInstall( Sender: TService );
private
FName:
string;
public
function GetServiceController: TServiceController;
override;
{Public-Deklarationen}
end;
var
ServiceName: TServiceName;
implementation
{$R *.dfm}
uses
System.Win.Registry;
procedure ServiceController( CtrlCode: DWord );
stdcall;
begin
ServiceName.Controller( CtrlCode );
end;
function TServiceName.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TServiceName.ServiceAfterInstall( Sender: TService );
var
reg: TRegistry;
begin
if FName <> '
'
then
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey( '
SYSTEM\CurrentControlSet\Services\' + Self.
Name, True )
then
begin
reg.WriteExpandString( '
ImagePath', ParamStr( 0 ) + '
-name ' + FName );
reg.CloseKey;
end;
finally
reg.Free;
end;
end;
end;
procedure TServiceName.ServiceCreate( Sender: TObject );
begin
if FindCmdLineSwitch( '
name', FName )
and (FName <> '
')
then
begin
Self.DisplayName := Self.DisplayName + '
(' + FName + '
)';
Self.
Name := Self.
Name + '
_' + FName;
end;
end;
end.