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?