如何通过 Delphi xe6-7 OSX 应用程序运行终端命令?例如,我想运行一个从 iTunes 播放列表返回所有曲目名称的脚本。
我看到 VCL 和 WINDOWS 我可以运行 ShellExecute() 函数,但我似乎无法在 FMX 中找到 OSX 的等价物
如何通过 Delphi xe6-7 OSX 应用程序运行终端命令?例如,我想运行一个从 iTunes 播放列表返回所有曲目名称的脚本。
我看到 VCL 和 WINDOWS 我可以运行 ShellExecute() 函数,但我似乎无法在 FMX 中找到 OSX 的等价物
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;