0

如何通过 Delphi xe6-7 OSX 应用程序运行终端命令?例如,我想运行一个从 iTunes 播放列表返回所有曲目名称的脚本。

我看到 VCL 和 WINDOWS 我可以运行 ShellExecute() 函数,但我似乎无法在 FMX 中找到 OSX 的等价物

4

1 回答 1

4

ShellExecute 是 Windows 操作系统函数,而不是 VCL 函数。由于我不确定的原因,BIBCE (Borland/Inprise/Borland/CodeGear/Embarcadero) 从不费心实现在 VCL/FMX 中启动命令的功能,尽管许多其他跨平台工具(Qt、Python 甚至 FreePascal)都有这个。正如 Stephen Ball 在一篇博文中所说,如果您的应用程序是跨平台的,您将需要使用 IFDEF 和每个平台的本机函数。:-(

虽然我无法访问 OS X 来测试它,但 Embarcadero 的 Ball 给出了以下代码来说明在 Windows 和 OS X 上启动文件,使用 OS X 的“_system”:

unit FileLauncher;

interface

uses
{$IFDEF MSWINDOWS}
Winapi.ShellAPI, Winapi.Windows;
{$ENDIF MSWINDOWS}
{$IFDEF MACOS}
Posix.Stdlib;
{$ENDIF MACOS}

type
TFileLauncher = class
class procedure Open(FilePath: string);
end;

implementation

class procedure TFileLauncher.Open(const FilePath: string);
begin
{$IFDEF MSWINDOWS}
ShellExecute(0, 'OPEN', PChar(FilePath), '', '', SW_SHOWNORMAL);
{$ENDIF MSWINDOWS}

{$IFDEF MACOS}
_system(PAnsiChar('open ' + '"' + AnsiString(FilePath) + '"'));
{$ENDIF MACOS}
end;
于 2014-09-04T01:02:21.433 回答