如何在Lazarus中为Mac执行相当于shellexecute()的操作?

时间:2009-02-26 17:54:40

标签: delphi macos pascal lazarus

如何在Lazarus for Mac中执行等效的shellexecute()

5 个答案:

答案 0 :(得分:8)

{这是执行此操作的代码。使用TProcess对象! }

uses Process;

...

procedure DoProcess;
Var
  Proc : TProcess;

Begin
  Proc := TProcess.Create(nil);
  try
    Proc.CommandLine := '/Applications/MyApp.app';

    PRoc.Options := Proc.Options + [poWaitOnExit];
    Proc.CommandLine := Proc.CommandLine + ' -someparam';
    PRoc.Execute;
  finally
    Proc.free;
  end;  
End;

答案 1 :(得分:3)

我不知道Lazarus库是否已经包含此功能,但如果没有,您可以使用Launch Services Programming Guide中的信息编写有条件编译的 ShellExecute()版本。

答案 2 :(得分:3)

如果要使用ShellExecute打开包含其首选应用程序的文档,则可以使用LCLIntf单元中的OpenDocument过程。

Lazarus转换工具也将此替换用于ShellExecute,请参阅Lazarus wiki。在内部,它使用RobS提到的open。

答案 3 :(得分:0)

我在OS X 10.4和10.3中成功使用了Shell('open ' + Filename),这似乎对大多数文件类型都很有效。

我在shell提示符下偶然发现open,现在错过了cygwin / linux等。

答案 4 :(得分:0)

在Mac上分叉伤害。 BSD使用vfork,而不是fork。