Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Dienst, Service oder was? (D 2009 Prof) (https://www.delphipraxis.net/152134-dienst-service-oder-d-2009-prof.html)

stahli 13. Jun 2010 14:13

AW: Dienst, Service oder was? (D 2009 Prof)
 
Ja klar, aber mir geht es auch um´s Prinzip.
Es sollte doch gehen, einen solchen Dienst zu realisieren - und das möchte ich mal testen.
Vielleicht können ja auch andere mal von dem Thread profitieren.

Luckie 13. Jun 2010 19:07

AW: Dienst, Service oder was? (D 2009 Prof)
 
Zitat:

Zitat von stahli (Beitrag 1028510)
Der Service ist auf "interactiv" gesetzt

Ab Windows Vista gibt es keine interaktiven Dienste mehr!

stahli 13. Jun 2010 22:11

AW: Dienst, Service oder was? (D 2009 Prof)
 
Ich habe jetzt noch einmal einen neuen Service erstellt, aber bekomme das auch nicht hin.

In den Service-Ereignissen lasse ich mir Nachrichten ausgeben:

* Beim Installieren: create, beforeinstall, afterinstall, "wurde installiert", destroy
* Starten des Dienstes bricht nach einigen Sekunden mit einer Fehlermeldung ab (Dienst antwortet nicht rechtzeitig)
(Das Ereignis Execute wird gar nicht erreicht.)
* Beim Deinstallieren: create, beforedeinstall, afterdeinstall, "wurde deinstalliert", destroy

Muss man noch etwas bei den Eigenschaften einstellen?
"Interactive" scheint ja egal zu sein.

kuba 13. Jun 2010 22:30

AW: Dienst, Service oder was? (D 2009 Prof)
 
Zitat:

Zitat von stahli (Beitrag 1028520)
Ja klar, aber mir geht es auch um´s Prinzip.
Es sollte doch gehen, einen solchen Dienst zu realisieren - und das möchte ich mal testen.
Vielleicht können ja auch andere mal von dem Thread profitieren.

Hy,

probier mal den NT-Service von Assabard !!

Der funktioniert auch noch unter Vista/7, um deine Abfrage jede Stunde auszulösen verwende folgenden Code:

Delphi-Quellcode:
var
    Time  :real;
PROCEDURE SERVICE_MAIN;
begin
  Time := Now+(StrtoTime('01:00:00'));
repeat
  if Now > TimeToStr(Time) then
  begin
     //AKTION
  end;
  sleep(1000); //den Dienst "bremsen", sonst 100% CPU Auslastung.
until stopped;
end;

BEGIN
  PROG_MAIN;
END.
KUBA

stahli 14. Jun 2010 14:09

AW: Dienst, Service oder was? (D 2009 Prof)
 
Hmm, das wird mir zu kompliziert. Das Tut ist ja auch aus 2001.

Soll es nicht möglich sein, so einen einfachen "Dienst" (z.B. Beep jede Minute) mit D2009 und dem TService unter Windows7 komfortabel zu realisieren?
Das kann ich mir eigentlich nicht vorstellen...

kuba 14. Jun 2010 15:24

AW: Dienst, Service oder was? (D 2009 Prof)
 
Zitat:

Zitat von stahli (Beitrag 1028767)
Hmm, das wird mir zu kompliziert. Das Tut ist ja auch aus 2001.

Soll es nicht möglich sein, so einen einfachen "Dienst" (z.B. Beep jede Minute) mit D2009 und dem TService unter Windows7 komfortabel zu realisieren?
Das kann ich mir eigentlich nicht vorstellen...

NT-Service ist immer noch NT-Service, hat sich seit 2001 nichts verändert, nur die Umgebung hat sich verändert sodass bei neueren NT-Systemen evtl. etwas beachtet werden muss.

Das Beispiel ist doch ganz einfach zu kompilieren, oder ?

Schau nochmal hier rein, das ist das gleiche.

Ein einfacher Dienst und Beep kannst du auch so machen:

Delphi-Quellcode:
PROCEDURE SERVICE_MAIN;
begin
repeat
  beep;
  sleep(60000); //jede Minute ein beep
until stopped;
end;

BEGIN
  PROG_MAIN;
END.

Luckie 14. Jun 2010 22:06

AW: Dienst, Service oder was? (D 2009 Prof)
 
Zitat:

Zitat von stahli (Beitrag 1028767)
Hmm, das wird mir zu kompliziert.

Mit manchen Sachen muss man sich eben mal etwas intensiver beschäftigen, da ist es mit Copy and Paste nicht getan, weil man auch verstehen muss, was man tut.

stahli 15. Jun 2010 19:31

AW: Dienst, Service oder was? (D 2009 Prof)
 
Ja klar, muss man sich beschäftigen. Aber man sollte immer den günstigsten/einfachsten Weg wählen.
Ich verstehe das immer noch so, dass für diese Zwecke EIGENTLICH der TService vorgesehen ist und dass die MainSchleife in der OnExecute-Behandlung läuft.
Entsprechende Beispiele habe ich im Netz gefunden, bei mir funktioniert das aber nicht.

Verstehe ich das völlig falsch? Kann das gar nicht gehen oder geht das nur unter Vista und Win7 nicht (mehr)?

Installieren kann ich den von mir erstellten Dienst ja, er lässt sich nur nicht korrekt starten.
Die Alternative nach "Assabard" finde ich recht umständlich und würde mich da nur einarbeiten wollen, wenn ich mit dem TService völlig auf dem Holzweg bin.
Vielleicht klemmt mein bisheriger Dienst-Versuch ja auch nur an einer Kleinigkeit?

SirThornberry 15. Jun 2010 20:12

AW: Dienst, Service oder was? (D 2009 Prof)
 
Es ist schon sehr merkwürdig das nur bei dir der TService nicht funktioniert.
Hast du denn schonmal überprüft ob überhaupt die Execute-Methode aufgerufen wird?
Das du während dem installieren und desinstallieren ein Beep hörst wird übrigens nicht an der Execute-Methode liegen. Viel mehr vermute ich das dein Timer zur Designzeit platziert wurde und Enabled dort noch auf True steht. Denn die Execute-Methode wird während dem installieren und deinstallieren eigentlich nicht aufgerufen.

stahli 15. Jun 2010 20:26

AW: Dienst, Service oder was? (D 2009 Prof)
 
Das mit dem Timer stimmt. Der war in der "Form" zur Designzeit aktiviert.

Ich habe dann einen Test ohne Timer versucht und in den Ereignissen Nachrichten ausgegeben (habe ich weiter oben aufgeführt).
OnInstall usw werden durchgeführt.

In der Systemüberwachung/Dienste starte ich dann den Service, was nach einer Weile mit einer Fehlermeldung abbricht.
OnExecute wird nicht erreicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.
Seite 2 von 4     12 34      

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