Folgender Code:
Delphi-Quellcode:
//type
//TPWideCharArray = array[0..0] of PWideChar;
//PPWideCharArray = ^TPWideCharArray;
//function CommandLineToArgvW( lpCmdLine: PWideChar; var NumArgs: Integer): PPWideChar;
//stdcall; external 'shell32.dll';
procedure GetCommandLineArgs(Args: TStrings);
var
NumArgs: Integer;
//TempArgs: PPWideCharArray;
TempArgs: PPWideChar;
i: Integer;
begin
if CommandLineToArgvW(GetCommandLineW, NumArgs) <>
nil then
begin
try
try
TempArgs := CommandLineToArgvW(GetCommandLineW, NumArgs);
for i := 0
to NumArgs - 1
do
Args.Add(TempArgs^[i]);
except
raise Exception.Create(SysErrorMessage(GetLastError));
end;
finally
GlobalFree(THandle(TempArgs));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GetCommandLineArgs(ListBox1.Items);
end;
Wenn ich PPWideChar und die Funktion nicht selber deklariere, siehe auskommentierten Code, bekomme ich nicht die Argumente, sondern nur die ersten drei Zeichen des Pfades.
Was muss ich ändern, damit ich die Datentypen und die Funktion nicht selber deklarieren muss, damit es funktioniert?
Entwicklungsumgebung ist Delphi 7, also nix
Unicode.