7

如何shellexecute()在 Mac 上执行与 Lazarus 中的等效操作?

4

5 回答 5

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;
于 2009-03-05T19:26:49.910 回答
3

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

于 2009-02-27T05:22:06.887 回答
3

如果您想使用 ShellExecute 打开带有首选应用程序的文档,则可以使用 LCLIntf 单元中的 OpenDocument 过程。

Lazarus 转换工具也使用这个替代 ShellExecute,请参阅Lazarus wiki。如 RobS 所述,它在内部使用 open。

于 2011-09-19T10:43:47.767 回答
0

我已经成功地Shell('open ' + Filename)在 OS X 10.4 和 10.3 中使用,这对于大多数文件类型来说似乎工作得相当好。

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

于 2009-02-27T09:06:09.640 回答
0

叉子在 Mac 上很痛。BSD 使用 vfork,而不是 fork。

于 2009-04-26T17:27:26.143 回答