如何在Lazarus for Mac中执行等效的shellexecute()
答案 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。