Pointerman Geschrieben 3. Dezember 2003 Geschrieben 3. Dezember 2003 Moin! Ich möchte einen Dienst mit Delphi 5 Enterprise schreiben. Ich habe dazu unter "Datei/Neu" einfach mal "Service-Anwendung" ausgewählt und mit ein bischen Quelltext gefüllt. Genauer gesagt, ich will im Event "OnExecute" ein einfaches "Hallo Welt" ausgeben lassen. Dummerweise tut sich gar nichts. Was habe ich vergessen? Delphi-Dienst-Profis vor! P.S.: Der Dienst wird durch c:\Dienst /install erfolgreich installieren und /uninstall funzt auch. Zitieren
geloescht_JesterDay Geschrieben 3. Dezember 2003 Geschrieben 3. Dezember 2003 Hast du die Eigenschaft Interactive des TASSvc auf True? Um einen GUI Service zu schreiben (also einen mit Ausgabe/Eingabe auf der GUI) muss das gemacht werden. Laut Empfehlungen (auch von MS) sollen Dienste aber immer Interactive=false sein, ansonsten sind sie prinzipiel unsicher. Zitieren
Pointerman Geschrieben 3. Dezember 2003 Autor Geschrieben 3. Dezember 2003 HummHomm! Ich hab interacitv mal probehalber auf True gesetzt, daß hat aber auch nichts gebracht. Wird eigentlich OnExecute automatisch ausgeführt, wenn ich den Dienst mit /install installiere, oder muss man den noch zusätzlich starten? Ach und dann ist mir noch etwas seltsames aufgefallen: Wenn ich mir im Taskmanager die Prozesse angucke, dann ist mein Dienst da nur kurz zu sehen, wenn ich die Nachrichten "Dienst wurde erfolgreich installiert" bzw "...deinstalliert" bekomme. Irgendwelche Ideen? Oder Tutorials? Die Delphi-Hilfe finde ich recht undurchschaubar und beim googeln bin ich immer nur auf Tuts gestossen, die das ganze ohne Delphi-Bordmittel erledigt haben. Des ist mir aber zu umständlich. Dank sowohl im Nachhinein als auch im Voraus! Zitieren
geloescht_JesterDay Geschrieben 4. Dezember 2003 Geschrieben 4. Dezember 2003 Original geschrieben von Pointerman Wird eigentlich OnExecute automatisch ausgeführt, wenn ich den Dienst mit /install installiere, oder muss man den noch zusätzlich starten? TService.OnExecute Occurs when the thread associated with the service starts up. [...] When the OnExecute event handler finishes, the service thread terminates. Most OnExecute event handlers contain a loop that calls the service thread’s ProcessRequests method so that other service requests are not locked out. OnExecute wird dann ausgeführt wenn der Service startet, sobald OnExecute abgeschlossen ist wird der Service beendet. Deine Meldung kommt durch das OnBeforeInstall Event. Und ein Service wird dann gestartet, wenn er gestartet wird, nciht wenn er installiert wird Sprich nach dem Install siehst du dir mal die Services von windows an und suchst dort deinen. Da steht dann, dass er automatisch startet oder manuell. Automatisch heisst, bei Start von Windows. Du kannst den Service dort aber auch (auch wenn er auf Auto steht) manuell starten. Ich hab in der OnExecute Prozedur ganz normalen Code und am Ende: while not Terminated do ServiceThread.ProcessRequests(True); Das wars auch schon, und der funktioniert. (Ich glaub aber der Code oben ist nicht unbedingt notwendig bzw. nur wenn du eine Schleife benutzt und der Service lange läuft (oder die ganze Zeit halt). Zitieren
Pointerman Geschrieben 4. Dezember 2003 Autor Geschrieben 4. Dezember 2003 Hi! Vielen Dank, jetzt funzt es! Kaum macht man es richtig, funktioniert es! Er hat ja den Dienst installiert, aber ich konnt ihn nicht im Taskmanager sehen. War ja auch kein Wunder, weil er nicht installiert war. In der MMC/Dienste konnt ich ihn auch nicht finden, aber aus reiner BLÖDHEIT! Ich hab nicht dran gedacht, daß mein Dienst anders heißt, als die .exe, die ich erzeugt habe. Also nach Deiner Antwort nochmal reingeschaut, gefunden, gestartet und es läuft! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.