Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#1

WindowsService und FMX geht das?

  Alt 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)
  Mit Zitat antworten Zitat