Hiho,
als Delphianer lehnt man sich ja oft zurück und benutzt mal eben ParamCount und ParamStr(x). Leider ist diese Variante nur mit
ANSI-Longstrings möglich ...
Unicode ... keine Spur :-/
Leider, aber genau dazu gibt es ja eine wunderschöne Funktion seit Windows NT 3.5: CommandLineToArgvW()
Hier der Prototyp:
Delphi-Quellcode:
type
TWCarr = array[0..0] of PWideChar;
PWCarr = ^TWCarr;
function CommandLineToArgvW(
lpCmdLine: PWideChar;
var NumArgs: Integer
): PWCarr; stdcall; external 'shell32.dll';
Hier ein Anwendungsbeispiel. Parameter 1 ist der Modulname ... Parameter 2 ist dann das nächste etc pp.
Die Indizes in im Array sind aber nullbasiert ... also ist Parameter 1 mit Index 0 erreichbar etc pp.
Im Integerwert wird die Anzahl der zurückgegebenen Parameter eingetragen.
Freigeben obliegt dem Programm, welches die Funktion benutzt (siehe FINALLY).
Delphi-Quellcode:
var
i: Integer;
arrParams: PWCarr;
begin
arrParams := CommandLineToArgvW(GetCommandLineW, i);
if arrParams <> nil then
try
case i of
3:
Writeln(String(arrParams^[i - 1])); // Parameter 3
else
Writeln(String(arrParams^[i - 2])); // Parameter 2
end;
finally
GlobalFree(THandle(arrParams));
end;
end;