AGB  ·  Datenschutz  ·  Impressum  







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

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.358 Beiträge
 
Delphi 11 Alexandria
 
#1

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

  Alt 18. Jun 2010, 16:43
Ich komme einfach nicht weiter und lade mal eine kleine j.exe hoch.
Vielleicht kann es ja mal jemand testen, das als Service zu installieren und zu starten.
Die Installation wird mit Nachrichten porotokolliert und beim starten und ausführen sollten beep erzeugt werden, der Dienst lässt sich aber bei mir nicht starten.

Der komplette Quelltext:
Delphi-Quellcode:
unit sj;

interface

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

type
  TServiceJ = class(TService)
    procedure ServiceExecute(Sender: TService);
    procedure ServiceAfterInstall(Sender: TService);
    procedure ServiceAfterUninstall(Sender: TService);
    procedure ServiceBeforeInstall(Sender: TService);
    procedure ServiceBeforeUninstall(Sender: TService);
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
    procedure ServiceCreate(Sender: TObject);
    procedure ServiceDestroy(Sender: TObject);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
    procedure ServiceShutdown(Sender: TService);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
  private
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  ServiceJ: TServiceJ;

implementation

{$R *.DFM}

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

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

procedure TServiceJ.ServiceAfterInstall(Sender: TService);
begin
  ShowMessage('ServiceAfterInstall');
end;

procedure TServiceJ.ServiceAfterUninstall(Sender: TService);
begin
  ShowMessage('ServiceAfterUninstall');
end;

procedure TServiceJ.ServiceBeforeInstall(Sender: TService);
begin
  ShowMessage('ServiceBeforeInstall');
end;

procedure TServiceJ.ServiceBeforeUninstall(Sender: TService);
begin
  ShowMessage('ServiceBeforeUninstall');
end;

procedure TServiceJ.ServiceContinue(Sender: TService; var Continued: Boolean);
begin
  Beep;
end;

procedure TServiceJ.ServiceCreate(Sender: TObject);
begin
  ShowMessage('ServiceCreate');
end;

procedure TServiceJ.ServiceDestroy(Sender: TObject);
begin
  ShowMessage('ServiceDestroy');
end;

procedure TServiceJ.ServiceExecute(Sender: TService);
begin
  Beep;
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(False); // wait for termination
    Sleep(1);
  end;
  Beep;
end;

procedure TServiceJ.ServicePause(Sender: TService; var Paused: Boolean);
begin
  Beep;
end;

procedure TServiceJ.ServiceShutdown(Sender: TService);
begin
  Beep;
end;

procedure TServiceJ.ServiceStart(Sender: TService; var Started: Boolean);
begin
  Beep;
end;

procedure TServiceJ.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  Beep;
end;

end.
Angehängte Dateien
Dateityp: zip j.zip (268,6 KB, 6x aufgerufen)
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 18. Jun 2010, 18:19
Wo wird da was protokolliert? Ich habe dir schon mal gesagt, dass du die ShowMessage Aufrufe nie sehen wirst, es sei denn du arbeitest noch unter Windows XP. Ab Windows Vista gibt es keine interaktiven Dienste mehr. Ein Dienst kann also kein Fenster auf dem Desktop des interaktiven Benutzers anzeigen.
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.358 Beiträge
 
Delphi 11 Alexandria
 
#3

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

  Alt 19. Jun 2010, 00:29
ShowMessage funktioniert beim Installieren und Deinstallieren.
Zur Dienst-Laufzeit habe ich testweise nur einen Beep verwendent. Ich werde mal noch ohne den Beep testen, ob der Dienst dann gestartet werden kann (der Dienst heisst übrigens "ServiceJ").
Wie kann man denn dann Nachrichten ausgeben? Dienste blenden ja unter Vista/Win7 immer kleine Fenster über der Symbolleiste ein.
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.358 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 19. Jun 2010, 00:54
Aha!
Ich habe die units SysUtils und Dialogs entfernt und alle ShowMessage und Beeps.
Jetzt lässt sich der Service starten, wobei ich halt keine "Einblicke" habe.

Jetzt muss ich noch einen zyklischen Website-Abruf regeln:
- Internet-Komponente (muss ich mich damit beschäftigen)
- Pausen (sollte sicher Sleep in der Schleife reichen)
und vor allem:
- eine AUSGABE, wenn die Website einen bestimmten Text enthält.

Wie kann man den letzten Punkt (unter Win7) realisieren?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
542 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 19. Jun 2010, 09:57
Aha!
und vor allem:
- eine AUSGABE, wenn die Website einen bestimmten Text enthält.

Wie kann man den letzten Punkt (unter Win7) realisieren?
Mit Hilfe einer Applikation welche unter dem aktuellen Benutzer gestartet ist und
via IPC mit Deinem Service kommuniziert.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

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

  Alt 19. Jun 2010, 11:30
Ok, ich habe es jetzt doch mit einer normalen Anwendung gelöst, die nur in den Prozessen zu sehen ist.

Caption der MainForm habe ich auf '' gesetzt. Die Anwendung wird im Autostart-Ordner aufgenommen.
OnCreate der MainForm sieht folgendermaßen aus:

Delphi-Quellcode:
procedure TFormJC.FormCreate(Sender: TObject);
var
  BreakFlag: Boolean;
begin
  BreakFlag := False;
  repeat
    Beep; // wird noch mit Leben gefüllt
    Sleep(60000);
  until BreakFlag;
  Close;
end;
Die Anwendung kommt einfach nicht dazu, ein Formular einzublenden und ist nur in den Prozessen der Systemüberwachung zu sehen.

Mein Anliegen, dass keine störenden Formulare und Einträge in den "Anwendungen" der Systemüberwachung oder in der Taskleiste auftauchen ist damit gelöst.
Außerdem kann ich mit den üblichen VCL-Komponenten arbeiten.

Trotzdem wäre mal ein Dienst-Beispiel für Win7 (mit D2009 oder höher erstellt) interessant, das z.B. jede Minute einen BallonTip o.ä. einblendet.
Das mal als Anregung, falls jemand einmal ein Tutorial erstellen will...
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
 
#7

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

  Alt 19. Jun 2010, 12:27
Die Anwendung kommt einfach nicht dazu, ein Formular einzublenden
Das ist schon mehr als grausam. Dabei gibt es hier im Forum mehr genug Beispiele, wie man das Hauptformular und den Taskbareintrag ausblendet.

Und hättest du mal auf mich gehört, als ich dir ganz zu Anfang gesagt habe, dass das mit der ShowMessage nichts wird, hättest du deinen Dienst schon viel früher zum Laufen gebracht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:01 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