如何通过Delphi xe6-7 OSX应用程序运行终端命令?我想运行一个脚本,例如从iTunes播放列表中返回所有曲目名称。
我看到VCL和WINDOWS我可以运行ShellExecute()函数,但我似乎无法在FMX中找到OSX的等价物
答案 0 :(得分: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上启动文件,使用“_system”作为OS X:
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;