![]() |
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: |
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
|
Re: Tutorial funkt bei mir nicht
Zitat:
|
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? |
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
|
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:
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.
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. 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 |
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