Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Windows Dienst aus Delphi 2006 startet nicht (https://www.delphipraxis.net/76412-windows-dienst-aus-delphi-2006-startet-nicht.html)

Cyberbob_at_tot 4. Sep 2006 08:27


Windows Dienst aus Delphi 2006 startet nicht
 
Guten Morgen zusammen,
hoffe ich habe das Thema hier richtig hineingepackt. Ansonsten sorry.

Es geht dadrum, ich habe unter Delphi 2006 Win32 einen Windows Dienst programmiert. Ist soweit ja nicht schwer. Habe die Proceduren Start, Stop, Pause usw. einfach mit einer MSGBOX versehen. Wenn der Dienst läuft soll er einfach jede 5 Sekunden ein Popup ausgeben. Nur zum Test.

Habe dann den Dienst per Parameter "- install" installiert. Man sieht meinen Service auch unter Dienste in Windows, aber wenn ich diesen Dienst nun starten will. Dauert das sehr sehr lange und nach einer Zeit sagt Windows das der Dienst nicht mehr reagiert. (Windows XP Home und Pro getestet)

Kennt jemand das Problem ?

MFG

Cyberbob

Angel4585 4. Sep 2006 08:51

Re: Windows Dienst aus Delphi 2006 startet nicht
 
zeig vllt mal bissl code.
Hast du eine OnExecute-Prozedur in deinem Thread?

Cyberbob_at_tot 4. Sep 2006 08:57

Re: Windows Dienst aus Delphi 2006 startet nicht
 
OnExecute habe ich noch garnicht benutzt. Wollte nur ein Testprogramm schreiben. Hier der Code...

Code:
unit Unit1;

interface

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

type
  TService1 = class(TService)
    Timer1: TTimer;
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    procedure Timer1Timer(Sender: TObject);
    procedure ServiceBeforeInstall(Sender: TService);
    procedure ServiceAfterInstall(Sender: TService);
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
  private
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  Service1: TService1;

implementation

{$R *.DFM}

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

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

procedure TService1.ServiceAfterInstall(Sender: TService);
begin
Showmessage('Installiert');
end;

procedure TService1.ServiceBeforeInstall(Sender: TService);
begin
Showmessage('Install wird gestartet');
end;

procedure TService1.ServiceContinue(Sender: TService; var Continued: Boolean);
begin
Timer1.Enabled:=true;
Showmessage('wiederaufgenommen');
end;

procedure TService1.ServicePause(Sender: TService; var Paused: Boolean);
begin
Timer1.Enabled:=false;
Showmessage('Pausiert');
end;

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
Timer1.Enabled:=true;
Showmessage('Gestartet');
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
Timer1.Enabled:=false;
Showmessage('gestopt');
end;

procedure TService1.Timer1Timer(Sender: TObject);
begin
     Showmessage('Aktion');
end;

end.

Luckie 4. Sep 2006 09:10

Re: Windows Dienst aus Delphi 2006 startet nicht
 
Zitat:

Zitat von Cyberbob_at_tot
Habe die Proceduren Start, Stop, Pause usw. einfach mit einer MSGBOX versehen. Wenn der Dienst läuft soll er einfach jede 5 Sekunden ein Popup ausgeben. Nur zum Test.

Ein Dienst läuft in einer anderen WindowsStation und somit auch auf einem anderen Desktop. Wenn du iohn nicht als Interaktivendienst installierst, wirst du nie eine Messagebox sehen. Interaktivedienste sind zu dem eine Sicherheitslücke und werden ab Windows Vista nicht mehr unterstützt.

Cyberbob_at_tot 4. Sep 2006 09:22

Re: Windows Dienst aus Delphi 2006 startet nicht
 
Das Problem ist ja nicht, das ich die Msgbox nicht sehe, sondern das der Dienst nicht starten will.

Im Debug Mode funktioniert das mit den Boxen, auch beim Installieren bzw Deinstallieren kommen die Boxen.

Genauergesagt bekomme ich beim Start des Dienst folgende Fehlermeldung:

"Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung"

Cyberbob_at_tot 4. Sep 2006 09:58

Re: Windows Dienst aus Delphi 2006 startet nicht
 
@Luckie
Habe deine Aussage erst beim 3ten Mal lesen verstanden. Muss "Interactive" auf true setzen damit kein Fehler mehr kommt. Danke für die Hilfe!

gsh 4. Sep 2006 10:13

Re: Windows Dienst aus Delphi 2006 startet nicht
 
ja so geht es ABBBBER das ist eine große sicherheitslücke wenn du des auf true setzt, also ist davon abzuraten.

Schreib lieber alles in eine Log und gib es nicht bei showMessage aus

Cyberbob_at_tot 4. Sep 2006 10:17

Re: Windows Dienst aus Delphi 2006 startet nicht
 
Sollte ja auch nur zum testen sein, der Dienst soll ja komplett im Hintergrund laufen, nur die Logs gehen eben ein eine Datei!

supermuckl 4. Sep 2006 12:15

Re: Windows Dienst aus Delphi 2006 startet nicht
 
dieses problem habe ich auch, wenn ich das onpause event mit einer procedure belegt habe.

mach einfach mal alle events ausser onstart und onstop weg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf