Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Tutorial funkt bei mir nicht (https://www.delphipraxis.net/119677-tutorial-funkt-bei-mir-nicht.html)

sunshineh 29. Aug 2008 21:28


Tutorial funkt bei mir nicht
 
Hallo,
ich habe mir das Tutorial (den Code mit den ShowMessages) runtergeladen und in eine neue Delphi2007-Service-Anwendung kopiert und anschließend compiliert. Wenn ich sie nun installiere (cmd ->projektname.exe /install), so erhalte ich nur von Windows die Message (Service erfolgreich installiert) und ich sehe ihn auch mit Strg+Alt+Entf.
Aber was ich auch mache (Neustarten, Deinstallieren, auf der Windows-Dienste-Seite Dienst beenden/anhalten/neu starten drücken, die gewünschten Messages bekomme ich nicht zu sehen.
Ich nutze Windows XP.
Was mache ich falsch?! :pale:

mkinzler 29. Aug 2008 21:33

Re: Tutorial funkt bei mir nicht
 
Hast du den Austausch zwischen Dienst und Gui erlaubt? Btw. weil das ein Sicherheitsrisiko bedeutet geht dies abr Vista nicht mehr

Luckie 29. Aug 2008 21:34

Re: Tutorial funkt bei mir nicht
 
Zitat:

Zitat von sunshineh
Was mache ich falsch?! :pale:

Dienste laufen in einer anderen Windows Station und haben keinen Zugrif auf den Desltop des interaktiven Benutzers und dessen Desktop. Die Nachricht wird schon angezeigt, aber eben auf dem Desktop des Dienstes.

sunshineh 29. Aug 2008 21:43

Re: Tutorial funkt bei mir nicht
 
Ich habe die Eigenschaft Interactive auf "True" gesetzt.
Wenn ich die Meldungen auf meinem Desktop nicht sehe, wie kann ich dann einen Service programmieren und wissen was er macht?

mkinzler 29. Aug 2008 21:54

Re: Tutorial funkt bei mir nicht
 
Verwende für die Ausgabe eine Logdatei oder ein weiteres Programm, mit welchem du üer IPC, IP, MailSlot, Named Pipes o.ä. kommunizierst

sunshineh 3. Sep 2008 12:10

Re: Tutorial funkt bei mir nicht
 
Also, ich habe eine Serviceanwendung, wobeu "Interaktive = True" ist.
Hier habe ich auf die Oberfläche des Service.pas einen Timer gezogen und folgenden CODE eingefügt:

Delphi-Quellcode:
unit Service;

interface

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

type
  TService1 = class(TService)
    Timer1: TTimer;
    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 ServiceExecute(Sender: TService);
    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
  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('AfterInstall');
end;

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

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

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

procedure TService1.ServiceContinue(Sender: TService;
  var Continued: Boolean);
begin
  ShowMessage('OnContinue');
  Continued := True;
end;

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

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

procedure TService1.ServiceExecute(Sender: TService);
  var F: TextFile;
  text:string;

begin
  ShowMessage('OnExecute - begin');
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(False);

    if Timer1.Enabled then

    begin { eine Textdatei öffnen }
      AssignFile(f, 'C:\Test.txt');
      rewrite(f);
      Writeln(f, 'Ich hänge jetzt etwas am Dateiende an.');
      CloseFile(f);
    end;
    end;
  ShowMessage('OnExecute - end');
end;

procedure TService1.ServicePause(Sender: TService; var Paused: Boolean);
begin
  ShowMessage('OnPause');
  Paused := True;
end;

procedure TService1.ServiceShutdown(Sender: TService);
begin
  ShowMessage('OnShutdown');
end;

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
  ShowMessage('OnStart');
  Started := True;
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  ShowMessage('OnStop');
  Stopped := True;
end;

end.
Wenn ich nun über cmd den Service installiere, bekomme ich die Meldung das der Service installiert ist (ich sehe ihn auch über ALT+STRG+ENTF, aber nicht in der Dienstverwaltung ( Systemsteuerung -> Verwaltung -> Dienste). Es passiert auch nichts, es wird keine Message gezeigt und auch in das txt wird nichts geschrieben! Auch nicht nach einem neustart.

1. Wo steckt der Fehler?
2. Wie arbeite ich richtig an einer Serviceanwendung?
a) Kann ich die mit Delphi debuggen?
b) Wenn ich den Service deinstalliere, kann ich eine Codeänderung erst nach einem Neustart wieder compilieren (da ich sonst die Meldung, dass die neue exe nicht compiliert werden kann)

Vielen Dank für die Hilfe, mein Computer dankt auch, wenn er nicht ständig wieder hochgefahren werden muss :zwinker:

Gruß
sunshineh

sunshineh 4. Sep 2008 08:43

Re: Tutorial funkt bei mir nicht
 
sieht keiner den Fehler, oder kann mir niemand Tipps mit dem Umgang der Service-Programmierung geben oder einen Link?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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 by Thomas Breitkreuz