AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Tutorial funkt bei mir nicht
Tutorial durchsuchen
Ansicht
Themen-Optionen

Tutorial funkt bei mir nicht

Ein Tutorial von sunshineh · begonnen am 29. Aug 2008 · letzter Beitrag vom 4. Sep 2008
Antwort Antwort
sunshineh
Registriert seit: 8. Apr 2008
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?!
 
mkinzler

 
Delphi 11 Alexandria
 
#2
  Alt 29. Aug 2008, 21:33
Hast du den Austausch zwischen Dienst und Gui erlaubt? Btw. weil das ein Sicherheitsrisiko bedeutet geht dies abr Vista nicht mehr
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#3
  Alt 29. Aug 2008, 21:34
Zitat von sunshineh:
Was mache ich falsch?!
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.
Michael
  Mit Zitat antworten Zitat
sunshineh
 
#4
  Alt 29. Aug 2008, 21:43
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?
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#5
  Alt 29. Aug 2008, 21:54
Verwende für die Ausgabe eine Logdatei oder ein weiteres Programm, mit welchem du üer IPC, IP, MailSlot, Named Pipes o.ä. kommunizierst
Markus Kinzler
  Mit Zitat antworten Zitat
sunshineh
 
#6
  Alt 3. Sep 2008, 12:10
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

Gruß
sunshineh
  Mit Zitat antworten Zitat
sunshineh
 
#7
  Alt 4. Sep 2008, 08:43
sieht keiner den Fehler, oder kann mir niemand Tipps mit dem Umgang der Service-Programmierung geben oder einen Link?
  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 22:37 Uhr.
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