Entwickler-Ecke

Windows API - Service Anwendung - Auslesen der Startparameter


Askger - Di 26.08.08 09:48
Titel: Service Anwendung - Auslesen der Startparameter
Ich möchte gerne bei meiner Service Anwendung die Startparameter auslesen, welche ich bei in der Windows Verwaltung angegeben habe. Leider bekomme ich bis auf Paramter 0 (Dateiname) nur leere Strings zurück, obwohl die Anzahl der leeren String der Anzahl meiner übergebenen Parameter übereinstimmt.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TMeinDienst.ServiceExecute(Sender: TService);
var
  Zaehler: Integer;
  Param: string;
begin
  // Startparameter auslesen
  for Zaehler := 0 to ParamCount - 1 do
  begin
    Param := ParamStr(Zaehler);
    //...
  end;
  //...
end;

Vielleicht kann mir jemand helfen, habe bislang nichts über das auslesen der Startparameter speziell im Fall einer Service Anwendung gefunden.

Moderiert von user profile iconNarses: Quote- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 26.08.2008 um 10:13


ssb-blume - Mi 27.08.08 10:59

Hallo,

Schau mal in die API:
LPTSTR GetCommandLine(VOID);

Es wird die Adresse der Befehlszeile des aufrufenden Prozesses übergeben mit:
vollständiger Pfad und Name des Programms, eingeschlossen in Anführungszeichen
und gefolgt von den Argumenten, getrennt mit Leerzeichen(nicht in Anführungszeichen).


Askger - Mi 27.08.08 16:40

Leider bekomme ich auch hier lediglich das Programm und Pfad zurück und nicht die in der Verwaltung beim Start übergebenen Parameter.

Update:

Habe jetzt die Lösung, es lag an der Funktion ParamStr(Index: Integer);, welche intern auch die Funktion LPTSTR GetCommandLine(VOID); verwendet die beide keine Werte zurückliefern.

Habe jetzt die übergebenen Parameter im Property Param[Index: Integer]; von TService gefunden :-)

Es scheint so als sind die Startparameter beim Starten des Dienstes in der Verwaltung und die Startparamter in der Kommandozeile ein extra Ding für sich.