【问题标题】:Run a Terminal Command with Delphi XE7 FMX使用 Delphi XE7 FMX 运行终端命令
【发布时间】:2014-10-28 13:12:55
【问题描述】:

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

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

【问题讨论】:

    标签: delphi delphi-xe6 delphi-xe7


    【解决方案1】:

    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;
    

    【讨论】:

    猜你喜欢
    • 2015-12-08
    • 2011-10-17
    • 2019-12-22
    • 2018-12-28
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多