Einzelnen Beitrag anzeigen

QuickAndDirty

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

AW: WindowsService und FMX geht das?

  Alt 5. Dez 2024, 18:01
Erstmal ist es sowieso möglich FMX und VCL zu mischen
und dann läuft in deinem Fall doch eh nicht Beides gleichzeitig, also egal.
Sehr gut. Das wusste ich nicht das man das problemlos mischen kann.

TService baut ja auf der VCL auf, aber normal bekommst du davon nix mit.
Ja ich weiß.

Der Code ist alt.. wollte damals bestimmt doppelt und dreifach sicher gehen das es nicht mehr weitergeht. Habe aber keine Erklärung warum.

Wieso den Code nicht direkt im DPR-Maincode, bzw. warum nicht einen Boolean-Result und bei False den nachfolgenden Code überspringen?
Ich verwende das recht häufig. Und so wiederhole ich mich nicht so oft...


PS: ServiceApplication.Run beendet sich ja sofort wieder, wenn die Service-Anwendung nicht als Service gestartet wurde.
Drum hab ich mir den Code vom Run nachgebaut und wenn Parameter -DEBUG, erstelle ich ein DummyFenster mit einem Beendenknopf
und führe dann den Code meines TService-Klasse aus, um so sen Service einfach debuggen zu können (-DEBUG in den Startparametern des Projekts)

Man könnte aber auch zusätzlich/stattdessen auf MSDN-Library durchsuchenIsDebuggerPresent prüfen.
Interessant. Ich benutzte die "Fenster" Anwendung um den Dienst (selbe exe) zu starten/stoppen/Installieren/Deinstallieren/Settings zu ändern...Oder um die Geschäftslogik unabhängig vom Servicemanager auszuführen.
Das hilft auch beim debuggen.
Und ich erspare mir Setups und der Support muss dann nicht erst in den ServiceManager um nachzusehen ob der Dienst da ist und dann in die Konsole um den Dienst zu installieren,...


Muss ich Einen Windows Dienst erstellen und dann ein FMX Fenster hinzufügen ?
Muss ich evtl die "Projektoptionen->Delphi-Compiler->Unit-Gültigkeitsbereichsnamen" aus einem FMX projekt kopieren? Oder immer alles voll qualifiziert nutzen?

Ich benutze diese "UserTools.proj"
Code:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <DCC_Define>FrameWork_$(FrameworkType);$(DCC_Define)</DCC_Define>
  </PropertyGroup>
</Project>
Damit ich mit {$IFDEF Framework_FMX} oder {$IFDEF Framework_VCL} arbeiten kann.

Damit das korrekt gesetzt wird muss ich
Muss ich vermutlich erst das FMX Projekt starten und dann den Dienst Code im Projekt nachtragen oder?
Oder kann ich "FrameworkType" irgendwo in der IDE in den Projektoptionen ändern?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 5. Dez 2024 um 18:13 Uhr)
  Mit Zitat antworten Zitat