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

问题描述 投票:0回答:5

如何在 Mac 版 Lazarus 中执行相当于

shellexecute()
的操作?

macos lazarus
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;

3
投票

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


3
投票

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

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


1
投票

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


0
投票

我已经在 OS X 10.4 和 10.3 中成功使用了

Shell('open ' + Filename)
,它似乎对大多数文件类型都能很好地工作。

我在 shell 提示符下偶然发现了

open
,现在在 cygwin/linux 等中错过了它。

© www.soinside.com 2019 - 2024. All rights reserved.