![]() |
Service oder Anwendung
Hallo zusammen,
ich habe eine Funktion die in einer eigenen Unit liegt, welche per uses in mehreren Programmen eingebunden wird. Die Funktion müsste jetzt irgendwie ermitteln, ob das Programm in welche sie eingebunden ist eine normale Anwendung oder ein Dienst ist. Gibts dafür irgend eine Property von Application oder wie kann man das rausfinden? Oder was bietet die Windows API da für Möglichkeiten? Jemand ne idee? Danke, der Kowelenzer |
Re: Service oder Anwendung
Herzlich willkommen in der Delphi-PRAXiS, Kowelenz.
Du könntest einfach den Typ von Application abfragen:
Delphi-Quellcode:
Freundliche Grüße vom marabu
if Application is TServiceApplication then
ShowMessage('Wir sind Service') else ShowMessage(Application.ClassName); |
Re: Service oder Anwendung
aber die Globale Application ist doch erst verfügbar wenn man die Unit Forms einbindet oder das äquivalent für den Service. Und sobald die Unit Forms eingebunden wird, dächte ich, wird auch das TApplication was man aus der normalen Anwendung kennt instanziert.
|
Re: Service oder Anwendung
Zitat:
Äh ja und was ist an Marabus Vorschlag jetzt das Problem? Er wirt wohl die eine oder andere Unit eingebunden haben |
Re: Service oder Anwendung
eben, wenn meine annahme stimmt, hängt das Ergebnis davon ab welche Unit in der Unit wo der Test ist stattfindet.
|
Re: Service oder Anwendung
Zitat:
|
Re: Service oder Anwendung
@GuenterS: Eben, das würde funktionieren wenn er in seinem Hauptprogramm wo eine der Units eingebunden ist das ganze prüft. Aber er hat ja folgende Situation:
Unit1: Unit mit Funktion welche überprüfen soll ob es ein Service ist oder nicht Unit2: Hauptprogramm-> bindet Unit1 ein wo funktion ist welche feststellt ob es ein service ist oder nicht in Unit1 ist "Application" aber nur verfügbar wenn es per uses eingefügt ist. Und da ist eben die Frage welche Unit in die Uses soll. Sobald die Unit Forms in Unit1 eingebunden wird ist es immer eine normale Anwendung obwohl in der Hauptunit eventuell ein Service steckt. Wenn die Prüfung direkt in Unit2 statt finden würde wäre es also kein Problem. Aber dadurch das in Unit1 die Funktion sein soll welche prüft kommt es eben zu genanntem problem. |
Re: Service oder Anwendung
Ach, es ist alles noch viel schlimmer: Wird SvcMgr eingebunden, dann existieren sogar zwei Application-Objekte. Vergesst meinen Vorschlag, er war nicht sehr durchdacht. Wenn ihr bis morgen früh keine Lösung findet, dann denke ich nochmal drüber nach.
Gute Nacht |
Re: Service oder Anwendung
Hmm einfach mal so in die runde geworfen:
Vllt. bringen dir Compiler schalter was Da kannst du dann in etwa so schreiben:
Delphi-Quellcode:
Ich bin totmüde also kann ich dir jetzt nicht mehr genau sagen wie die dinger heißen aber Forum suche
Programm:
{$Define Ich_bin_ein_Programm} Service: {$Define Ich_bin_ein_Service} Deine Unit: procedure SagMirWasDuBist; begin {$IFDEF Ich_bin_ein_Programm} ShowMessage("Bin ein Programm"); {$ENDIF} {$IFDEF Ich_bin_ein_Service} ShowMessage("Bin ein Service"); {$ENDIF} end; ![]() Gut nacht *umfall* |
Re: Service oder Anwendung
Hallo und Danke dass ihr euch so reinhängt!
Zu den Compilerschaltern, gute Idee, aber: Wenn ich {$Define Ich_bin_ein_Programm} in der Hauptunit mache und in der Funktionsunit das {$IFDEF Ich_bin_ein_Programm}, dann ist es dort nicht definiert. Das funktioniert bei mir nur, wenn ich das define innerhalb der selben Unit mache. Auch das Definieren in der dpr-Datei hat keinen Erfolg gebracht... Grüße, der Kowelenzer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz