Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
Delphi 12 Athens
|
WindowsService und FMX geht das?
5. Dez 2024, 16:16
Ich habe in meinen Services einen Startparameter SERVICE dann startet die Exe als Dienst...das wirde beim installieren in der Registry angepasst.
Andernfalls startet die Exe als Fensteranwednung.
Delphi-Quellcode:
//in AfterInstall aufrufen von TService aufrufen
Procedure AddServiceStartParamToRegistry(ServiceName: String);
var
reg:TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey(' SYSTEM\CurrentControlSet\Services\'+ServiceName, True) then
begin
reg.WriteString(' ImagePath', ParamStr(0) + ' /SERVICE ');
reg.CloseKey;
end;
finally
reg.Free;
end;
End;
Function CheckWindowedRun:Boolean;
Begin
Result := (
FindCmdLineSwitch(' APP', [' /',' -'],true)
)
or
(
not FindCmdLineSwitch(' INSTALL',[' /',' -'],true) and
not FindCmdLineSwitch(' UNINSTALL',[' /',' -'],true) and
not FindCmdLineSwitch(' SERVICE',[' /',' -'],true)
);
end;
Procedure RunWindowed(InstanceClass: TComponentClass; var Reference);
Begin
if CheckWindowedRun then
Begin
Vcl.Forms.Application.Initialize;
Vcl.Forms.Application.CreateForm(InstanceClass, Reference);
Vcl.Forms.Application.Run;
Halt(0);
End
End;
Delphi-Quellcode:
programm MY_Programm;
uses
Vcl.SvcMgr,
Web.WebReq,
uMyGUIFrm,
(*
etc. etc.
*)
;
begin
Randomize;
if WebRequestHandler <> nil then
WebRequestHandler.WebModuleClass := WebModuleClass;
//Ab jetzt kommt das Anwendungsframework
RunWindowed(uMyGUIFrm.TMyGUI, uMyGUIFrm.MyGui);
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(TMy_Service, My_Service);
Application.Run;
end.
Es waren aber immer VCL Fenster.
Ich würde das ganze auch mit FMX Fenstern machen.
Geht das?
Andreas Monads? Wtf are Monads?
Geändert von QuickAndDirty ( 5. Dez 2024 um 16:35 Uhr)
|
|
Zitat
|