在pascal中执行外部程序

时间:2016-07-10 13:17:13

标签: pascal freepascal launching-application

我想用下面的代码打开一个程序,但我不能

program launchprogram;
uses 
  Classes, SysUtils, Process;
var 
  AProcess: TProcess;
begin
  AProcess := TProcess.Create(nil);
  AProcess.Executable:= 'C:\Program Files (x86)\oCam\oCam.exe';
  AProcess.Parameters.Add('-h');
  AProcess.Options := AProcess.Options + [poWaitOnExit];
  AProcess.Execute;
  AProcess.Free;
end.

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

请参阅:http://wiki.freepascal.org/Executing_External_Programs

我在linux机器上试过这个并且工作正常

SysUtils.ExecuteProcess(UTF8ToSys('/full/path/to/binary'), '', []);  

或更好:

SysUtils.ExecuteProcess(UTF8ToAnsi('/full/path/to/binary'), '', []);

它也应该在MSWin中起作用

答案 1 :(得分:0)

以下是在Linux机器上使用TProcess的示例: enter code here


    procedure TForm1.Button1Click(Sender: TObject);
    VAR AProcess : TProcess;
    begin
     AProcess:= TProcess.Create(nil);
     Aprocess.Executable:= '/usr/bin/mysqldump';
     Aprocess.Parameters.Add('--user=root');
     Aprocess.Parameters.Add('--password=any');
     Aprocess.Parameters.Add('--result-file=/home/user/mydump.sql;
     Aprocess.Parameters.Add('database1);
     AProcess.Options := AProcess.Options + [poWaitOnExit,poUsePipes];
     AProcess.Execute;
     AProcess.Free;
     end; 
希望这会帮助你。我认为可执行文件不是怀特