[Lazarus] Confusion with TProcess on Windows

Ludo Brands ludo.brands at free.fr
Thu Aug 8 08:45:02 CEST 2013


On 08/08/2013 08:02 AM, Richard Mace wrote:
> Hi All,
> I am baffled :)
> If I open a command prompt, change to the directory which contains
> plink.exe and run the command:
> 
> plink -pw password root at 192.168.0.5 <mailto:root at 192.168.0.5> command
> 
> The command works no problem, but if I do following in a TProcess I get
> a "flash" of a black window, then nothing!
> 
>   Process := TProcess.Create(nil);
>   try
>     sPSFTPFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))
> + 'plink.exe';
>     Process.Executable := sPSFTPFile;
>     S := '-pw ' + Password + ' ' + Username + '@' + IPAddress + ' ' +
> Command;
> 
>     Process.Parameters.Add(S);
>     Process.Options := Process.Options + [poWaitOnExit];
>     Process.Execute;
>   finally
>     Process.Free;
>   end;
> 
> Any ideas?
> 
> 
You need to split the parameters. Parameters are the equivalent of
paramstr() or argv on the receiving end. So something like:

Process.Parameters.Add('-pw');
Process.Parameters.Add(Password);
Process.Parameters.Add(Username + '@' + IPAddress);
Process.Parameters.Add('<mailto:root at 192.168.0.5>');
Process.Parameters.Add(Command);

Ludo




More information about the Lazarus mailing list