AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Applikation als NT Service (System Dienst) unter XP starten
Thema durchsuchen
Ansicht
Themen-Optionen

Applikation als NT Service (System Dienst) unter XP starten

Ein Thema von xpmstos · begonnen am 26. Mär 2003 · letzter Beitrag vom 21. Jul 2003
Antwort Antwort
Seite 2 von 3     12 3      
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#11
  Alt 17. Mai 2003, 12:29
mhmm, wenn ich das richtig sehe kann ich mit dieser unit zwar andere Dienste steuern, aber mein Problem ist damit immer noch nicht gelößt, ich möchte ja meine eigene Anwendung so als Dienst laufen lassen, das ich auf die VCL komponenten (spez. TFTPServer, TPopupMenue und Timer) zugreifen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#12
  Alt 17. Mai 2003, 13:45
D7:

Datei - Neu - Weitere.. - Service-Anwendung.

Dann hast du eine Unit Service1. Dort kannst du dann dein procedures und functions, und alle nicht Visuellen Komponenten verwenden. Also dein Code schreiben.

Du kannst auch Formen verwenden, dann mußt du aber die Eigenschaft "Interactive" vom Service auf True setzen. Unter "Display-Name" trägst du den Namen ein, der unter dem Dienstmanager von NT erscheinen soll.

Anschließend Compilieren, nicht Starten.

DOS-Fenster öffnen, dann PFAD\PROG.exe -install eingeben. Danach ist dein Dienst unter NT vorhanden. "net start Dienstname" startet deinen Dienst, "net stop Dienstname" stoppt ihn wieder.
Mit PFAD\PROG.exe -uninstall entfernst du ihn wieder.

Das debuggen ist da schon etwas aufwendiger. Man kann sich zwar mit Diensten aus der IDE Verbinden, aber ich erzeuge mir immer Log-Dateien, schreibe mir die Werte da hinein, und werte das Ganze anschließend aus.

Noch Fragen ?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#13
  Alt 17. Mai 2003, 16:00
Hätte noch eine frage!
Gibt es ne möglichkeit einen Service zu schreiben, dass er als service und als normales Program funktioniert?
Also das es auch funktioniert, wenn es nicht installiert ist und ich die exe normal starte?
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#14
  Alt 17. Mai 2003, 16:06
Geht bestimmt. Ich weiß aber nicht wie. Würd mich aber auch brennend interessieren.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#15
  Alt 17. Mai 2003, 16:16
Machs doch wie beim Apache.
Ohne Parameter starten -> normaler Betrieb
Mit best. Parametern starten -> Installation/Start als Service
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#16
  Alt 17. Mai 2003, 16:24
und wie erkläre ich ihm, dass er bei normalem betrieb normal starten soll?

Also ich hab mal ein bissle rumprobiert, und wenn ich in die eigenschaft onExecute ne

Code:
server.start;
while laufe do begin
sleep(1);
application.ProcessMessages;
end;
setze wird beim normalen ausführen einafch diese endlosschleife ausgeführt, das heißt er beendet nicht, erst wenn die variable laufe auf false gesetzt wird geht er aus der schleife und beendet dadurch die anwendung. Müßte man nur noch abfangen, ob bestimte parameter gesendet wurden und irgendwie prüfen, ob normal ausgeführt oder ob per net start gestartet (fals man das muß)

Aber wird doch sicher ne elegantere lösung geben?
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#17
  Alt 19. Mai 2003, 11:10
Hi Chewie,

Hast du das schon mal gemacht?

Meiner Meinung nach basiert eine Anwendung ja auf TApplication und ein Service auf TService. Ist das den in einem Programm vereinbar?

Obwohl wenn man beide Klassen implementiert? Hm, ich werde das mal ausprobieren, mal sehen obs klappt.

Wenn du dazu ein Beispielcode hast, dann poste ihn doch mal.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#18
  Alt 19. Mai 2003, 12:14
Also services sind ganz normale Programme, mit einer kleinen besonderheit. Sie haben bestimmte prozeduren. Diese prozediren werden vom Service manager angesprochen, solten diese nicht vorhanden sien gibt der service manager fehler beim starten/beenden oder anderen aktionen aus. Einziges problem, wenn man eine Service-Anwendung erstellt beendet sich diese nach einem normalen ausführen selbstständig wieder. Die stelle an der sich die Anwendung beendet sollte aber auffindbar sein

Ach, was noch funktioniert:
global:
var exec:boolean;
im onStart und onStop des Services einfach
exec:=false;
im oncreate einfach
exec:=true;
und im onClose
while exec do application.processmessages; //es muß die Unit Forms als letzte eingetragen werden!

Dann beendet sich das programm bei einem normalen starten nicht mehr! (funst bei mir recht gut, es belegt jedoch alle freie CPU auslastung.)
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#19
  Alt 19. Mai 2003, 12:25
Zitat von magicshadow:
(funst bei mir recht gut, es belegt jedoch alle freie CPU auslastung.)
Das wäre aber nicht unbedingt schön. Macht bei den Benutzer dann ein unprofessionellen Eindruck.

Aber es muß doch auch ohne volle CPU-Auslastung gehen, geht bei Apache ja auch
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#20
  Alt 19. Mai 2003, 12:32
geht, verlangsamt aber das programm ein wenig!
und im onClose
while exec do begin
application.processmessages;
sleep(1);
end;

na ja, ich guck heute abend mal wo dieses blödsinnige beenden, fals es normal gestartet wurde steht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz