在OS X中打开文件

时间:2015-03-04 15:32:47

标签: macos delphi firemonkey

在Delphi中,我想在OS X中打开一个文件。我的方法如下:

const
  Filename = 'test.bmp';

procedure SaveAndOpen;
begin
  Chart.SaveToBitmapFile(Filename);
  {$IFDEF MSWINDOWS}
  ShellExecute(0, 'open', Filename, '', '', SW_Normal);
  {$ELSE}
  _System(Filename);
  {$ENDIF}
end;

但没有任何反应。我做错了什么?

2 个答案:

答案 0 :(得分:3)

Embarcadero的Malcolm Groves的这篇文章涵盖了这个主题:Opening files and URLs in default applications in OS X

总之,您只需要:

uses
  Macapi.Appkit,       // for NSWorkspace
  Macapi.Foundation;   // for NSSTR
....
var
  Workspace: NSWorkspace; // interface, no need for explicit destruction
....
Workspace := TNSWorkspace.Create;
Workspace.openFile(NSSTR(FileName));

为了完整起见,如果您希望打开网址而不是文件,请改为拨打openURL

Workspace.openURL(NSSTR(URL));

关于您的Windows代码,我建议不要使用ShellExecute。该函数没有合理的错误报告。在其位置使用ShellExecuteEx

最后,你应该抽象出这个功能,以便它可以被程序的其他部分重用。您希望尽可能少地写出IFDEF

答案 1 :(得分:2)

您必须添加open动词,如此

_System(PAnsiChar('open ' + Filename));