AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Dienst, Service oder was? (D 2009 Prof)
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst, Service oder was? (D 2009 Prof)

Ein Thema von stahli · begonnen am 12. Jun 2010 · letzter Beitrag vom 19. Jun 2010
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#1

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

  Alt 12. Jun 2010, 14:18
Es sollte halt unauffällig im Hintergrund laufen und vor allem wollte ich mich mit dem Thema einmal beschäftigen.
Ich dachte, das wäre gut lösbar, ich habe nur eben keinen Ansatz gefunden, wie...

Ich habe mal testweise eine "Service-Anwendung" erstellt, die jede Sekunde einen Beep erzeugt, weiß aber schon nicht, ob das der richtige Weg ist und wie man diesen "Dienst" im Windows automatisch im Hintergrund laufen lässt...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 12. Jun 2010, 14:22
Und warum darf der Benutzer nicht wissen, dass da was im Hintergrund läuft?

Der Dienst muss vom Administrator installiert werden und der Starttyp auf automatisch stehen,m dann wird er bei jedem Windowsstart mit gestartet.

Und ich weiß nicht, wie du suchst, aber Bei Google suchendelphi dienst tutorial liefert mehr als genug Treffer.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 12. Jun 2010, 16:20
weiß aber schon nicht, ob das der richtige Weg ist und wie man diesen "Dienst" im Windows automatisch im Hintergrund laufen lässt...
Der Dienst läuft immer "automatisch im Hintergrund". Ab Vista kannst du jedoch nicht mit "normalen" (Message-)Dialogen mit dem angemeldeten Benutzer interagieren. Der Dienst läuft auch ohne das ein User angemeldet ist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 12. Jun 2010, 19:58
Ok, danke erst mal für die Hilfen.
Momentan kriege ich wohl nicht mal das googeln richtig hin ;-(
Ich werde mal ein bischen testen...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 13. Jun 2010, 12:50
Ich komme noch nicht klar damit und finde auch im Netz sehr Widersprüchliches
Vielleicht können wir das ja mal hier Stück für Stück nachvollziehbar aufarbeiten:

Delphi-Quellcode:
unit sju;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
  ExtCtrls;

type
  TServiceJu = class(TService)
    Timer1: TTimer;
    procedure ServiceExecute(Sender: TService);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  ServiceJu: TServiceJu;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  ServiceJu.Controller(CtrlCode);
end;

function TServiceJu.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TServiceJu.ServiceExecute(Sender: TService);
begin
  Timer1.Enabled := True;
  while not Terminated do
    ServiceThread.ProcessRequests(False); // or True
  Timer1.Enabled := False;
end;

procedure TServiceJu.Timer1Timer(Sender: TObject);
begin
  Beep;
end;

end.
Wenn ich den Dienst in der Dos-Box mit "ju /install" installiere, erhalte ich eine MessageBox "Service erfolgreich installiert". Jede Sekunde beept der Service erwartungsgemäß.
Wenn ich die Meldung schließe, beept nix mehr.
Der Dienst läuft (wie man in der Systemüberwachung sieht) nach der Installation nicht automatisch. Wenn ich ihn starte, ist keine Reaktion ersichtlich (es beept nichts).
Wenn ich den Dienst mit "ju /uninstall" deinstalliere, erhalte ich eine MessageBox "Service erfolgreich deinstalliert". Jede Sekunde beept der Service wieder.
Wenn ich die Meldung schließe, beept nix mehr.

Ersetze ich das False im "ServiceThread.ProcessRequests(False);" durch True sind keine Änderungen zu bemerken.

Der Service ist auf "interactiv" gesetzt

Wenn ich den Timer entferne und ServiceExecute ändere in
Delphi-Quellcode:
while not Terminated do
begin
  ServiceThread.ProcessRequests(False);
  Beep;
  Sleep(500);
end;
erhalte ich zu keinem Zeitpunkt einen Beep.

Was mache ich falsch?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

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

  Alt 13. Jun 2010, 19:07
Der Service ist auf "interactiv" gesetzt
Ab Windows Vista gibt es keine interaktiven Dienste mehr!
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#7

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

  Alt 13. Jun 2010, 22:11
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:45 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