Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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 12. Jun 2010 11:08

Dienst, Service oder was? (D 2009 Prof)
 
Hallo zusammen,

ich möchte täglich/stündlich eine php-WebSite abrufen und auf einen bestimmten Inhalt (enthaltenen Text) prüfen.
Mit einem Formular und WebBrowser könnte ich das lösen.
Ich möchte das aber gern mit einemm Dienst im Hintergrund realisieren, finde aber passenden Informationen.

Die Fragen sind:
Wie kann ich solch einen Dienst erstellen und automatisch täglich starten?
Wie kann ich damit eine php-Seite als Text abholen?

Danke
Stahli

Bernhard Geyer 12. Jun 2010 12:35

AW: Dienst, Service oder was? (D 2009 Prof)
 
Du kannst einen Dienst nehmen oder einfach auch in Windows eine wiedergehrende Aufgabe eintragen und dort dein Programm entsprechend Starten lassen.

stahli 12. Jun 2010 12:44

AW: Dienst, Service oder was? (D 2009 Prof)
 
Gibt es ein Tutorial, wie man so einen Windowsdienst erstellt und automatisch starten lässt? Ich finde keinen Einstieg dazu.

Luckie 12. Jun 2010 14:06

AW: Dienst, Service oder was? (D 2009 Prof)
 
Und warum muss es unbedingt ein Dienst sein? Reicht nicht ein Programm im Autostart?

stahli 12. Jun 2010 14:18

AW: Dienst, Service oder was? (D 2009 Prof)
 
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...

Luckie 12. Jun 2010 14:22

AW: Dienst, Service oder was? (D 2009 Prof)
 
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.

Bernhard Geyer 12. Jun 2010 16:20

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

Zitat von stahli (Beitrag 1028363)
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.

stahli 12. Jun 2010 19:58

AW: Dienst, Service oder was? (D 2009 Prof)
 
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 13. Jun 2010 12:50

AW: Dienst, Service oder was? (D 2009 Prof)
 
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?

sx2008 13. Jun 2010 13:37

AW: Dienst, Service oder was? (D 2009 Prof)
 
Wenn das Programm nur jede Stunde arbeiten soll, dann ist ja eigentlich kein Dienst erforderlich.
Die restliche Zeit würde das Programm nur auf "der faulen Haut" liegen und Resourcen verbrauchen.
Ich würde daher eine normale Anwendung zeitgesteuert mit dem Taskplaner starten.
Den Taskplaner kann man über TASKSCHD.MSC konfigurieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.
Seite 1 von 4  1 23     Letzte »    

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