Autor Beitrag
Jakane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mo 15.12.14 15:16 
Hallo liebe Delphi-Helfer :)

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
unit Haupt;

interface

uses
  System.SysUtils, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr, Vcl.Dialogs,
  Winapi.Windows, Winapi.Messages;

type
  TSHaupt = class(TService)
    procedure ServiceAfterInstall(Sender: TService);
    procedure ServiceAfterUninstall(Sender: TService);
    procedure ServiceBeforeInstall(Sender: TService);
    procedure ServiceBeforeUninstall(Sender: TService);
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
    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 }
    procedure Listeneintrag(psText: String);
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  SHaupt: TSHaupt;

implementation

{$R *.DFM}

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

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

procedure TSHaupt.ServiceAfterInstall(Sender: TService);
begin
  Listeneintrag('ServiceAfterInstall');
end;

procedure TSHaupt.ServiceAfterUninstall(Sender: TService);
begin
  Listeneintrag('ServiceAfterUninstall');
end;

procedure TSHaupt.ServiceBeforeInstall(Sender: TService);
begin
  Listeneintrag('ServiceBeforeInstall');
end;

procedure TSHaupt.ServiceBeforeUninstall(Sender: TService);
begin
  Listeneintrag('ServiceBeforeUninstall');
end;

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

procedure TSHaupt.ServiceExecute(Sender: TService);
begin
  Listeneintrag('OnExecute - begin');
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(False);
  end;
  Listeneintrag('OnExecute - end');
end;

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

procedure TSHaupt.ServiceShutdown(Sender: TService);
begin
  Listeneintrag('OnShutdown');
end;

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

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

procedure TSHaupt.Listeneintrag(psText: String);
var
  Liste : TStringList;
begin
  Liste := TStringList.Create;
  Liste.LoadFromFile('C:\Jakane\FÜDienst\Dienstbuch.log');
  Liste.Add(FormatDateTime('dd.mm.yy hh:nn:ss:zzz ', Now) + psText);
  Liste.SaveToFile('C:\Jakane\FÜDienst\Dienstbuch.log');
end;

end.


Nach dem Starten und Beenden der Services steht folgendes im Log:
15.12.14 14:13:03:408 ServiceBeforeInstall
15.12.14 14:13:03:440 ServiceAfterInstall
15.12.14 14:13:09:548 ServiceBeforeUninstall
15.12.14 14:13:09:552 ServiceAfterUninstall

Weiss einer wieso der mir speziell ServiceExecute und die anderen nicht ausführt?

Danke für evtl. Mühen :)

_________________
Die Welt besteht aus Zahlen, also ist alles möglich.
[Delphi 5] - [Delphi XE5]
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 15.12.14 15:48 
Hast Du die Ereignisse im Objektinspektor auch des Services auch drin stehen? Oder nur so in den Quellcode geschrieben?

Nebenbei (hat mit dem Problem nichts zu tun): Deine Procedure "Listeneintrag" hat ein Speicherleck. Besser so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  Liste : TStringList;
begin
  Liste := TStringList.Create;
  try
    Liste.LoadFromFile('C:\Jakane\FÜDienst\Dienstbuch.log');
    Liste.Add(FormatDateTime('dd.mm.yy hh:nn:ss:zzz ', Now) + psText);
    Liste.SaveToFile('C:\Jakane\FÜDienst\Dienstbuch.log');
  finally
    Liste.free;
  end;
end;

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mo 15.12.14 15:51 
Einen Service installieren bzw. zu deinstallieren hat nichts mit den Ausführen zu tun. Nachdem du einen Service installiert hast, musst du ihn über die Windowsdienste auch starten.
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mi 17.12.14 14:34 
Soviel eigene Blödheit sollte bestaft werden :oops: :lol: :lol:

_________________
Die Welt besteht aus Zahlen, also ist alles möglich.
[Delphi 5] - [Delphi XE5]