Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Service mit Parameter straten (https://www.delphipraxis.net/109122-service-mit-parameter-straten.html)

ManuelR 24. Feb 2008 21:18


Service mit Parameter straten
 
Hallo,
kennt jemand eine Möglichkeit einen Service mit einem Parameter zu starten ?

Danke

Jelly 24. Feb 2008 21:23

Re: Service mit Parameter straten
 
Einen Service kannst du nicht mit Parametern starten. Du kannst die Parameter aber als Datei oder in der Registry ablegen, und der Service liest diese dann beim Start aus.

ManuelR 25. Feb 2008 07:56

Re: Service mit Parameter straten
 
Hallo,

im Dienste Panel unter Systemsteuerung/Verwaltung hat man die Möglichkeit unter
Eigenschaften einen Startparameter einzugeben.
Ich weiss nur nicht wie man im Code an den Parameter kommt.

Hat vielleicht jemand eine Idee ?

Union 25. Feb 2008 09:20

Re: Service mit Parameter straten
 
Vielleicht mit ParamStr(1..x)?

sakura 25. Feb 2008 09:36

Re: Service mit Parameter straten
 
Zitat:

Zitat von Union
Vielleicht mit ParamStr(1..x)?

Nein, funktioniert im Service nicht, aber in einem Service geht folgendes:
Delphi-Quellcode:
for I := 0 to ParamCount do
  DoWhatEverWith(Param[I]);
...:cat:...

sakura 25. Feb 2008 09:43

Re: Service mit Parameter straten
 
Zitat:

Zitat von Jelly
Einen Service kannst du nicht mit Parametern starten. Du kannst die Parameter aber als Datei oder in der Registry ablegen, und der Service liest diese dann beim Start aus.

Nur weil man es nicht kennt, ... :duck: - sorry, konnte ich mir gerade nicht verkneifen :mrgreen:

...:cat:...

ManuelR 25. Feb 2008 09:59

Re: Service mit Parameter straten
 
Hi Sakura,

Du meinst die Param Eigenschaft von TService. Ok. Das funktioniert.
Die Frage ist jetzt noch wie man den Parameter reinbekommt.

Die Eingabe im Dienste Panel unter Systemsteuerung/Verwaltung ist leider
nicht persistent (?). D.h. beim nächsten Starten ist der Parameter wieder weg.


Danke

Union 25. Feb 2008 10:12

Re: Service mit Parameter straten
 
Du kannst mit MSDN-Library durchsuchenChangeServiceConfig direkt nach dem Installieren des Service den Pfad ändern um einen Parmeter einzufügen:
Delphi-Quellcode:
procedure TsrvTest.ServiceAfterInstall(Sender: TService);
var
   ScmH : SC_HANDLE;
   SvcH : CARDINAL;
   NewPath : string;
begin
   ScmH := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT or GENERIC_READ);
   if ScmH <> 0 then
   begin
      SvcH := OpenService(ScmH, pchar(Sender.Name), SERVICE_CHANGE_CONFIG);
      if SvcH <> 0 then
      begin
         NewPath := ParamStr(0)+' /Mein Parameter';
         ChangeServiceConfig(SvcH,
            SERVICE_NO_CHANGE,
            SERVICE_NO_CHANGE,
            SERVICE_NO_CHANGE,
            pchar(NewPath),
            nil,
            nil,
            nil,
            nil,
            nil,
            nil);
         CloseServiceHandle(SvcH);
      end;
      CloseServiceHandle(ScmH);
   end;
end;

Jelly 25. Feb 2008 13:19

Re: Service mit Parameter straten
 
Zitat:

Zitat von sakura
Nur weil man es nicht kennt, ... :duck: - sorry, konnte ich mir gerade nicht verkneifen :mrgreen:

:oops: Hast ja Recht... Ist mir ehrlich gesagt neu, dass man einen Service so konfigurieren kann... Wieder was gelernt :thumb:

ManuelR 25. Feb 2008 16:30

Re: Service mit Parameter straten
 
Hi Union,

danke für den Code.
Leider funktioniert's bei mir nicht. :cry:

Wenn ich den Parameter über das das Dienst Panel manuell eingebe,
dann kann ich den Parameter über das Service-Objekt auslesen:

Delphi-Quellcode:
 
s := BCService_Ctrl.param[0]  // hier bekomme ich den kompletten Pfad inkl. exe
s := BCService_Ctrl.param[1]; // und hier den Parameter

Nach dem Aufruf deines Codes

Delphi-Quellcode:
 
s := BCService_Ctrl.param[0]  // hier bekomme jetzt den Namen des Service-Objekts
s := BCService_Ctrl.param[1]; // Listenindex überschreitet das Maximum
Wie greiftst Du auf den Parameter vom Code aus zu ?

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.
Seite 1 von 2  1 2      

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