Thi*_*Guy 0 delphi delphi-xe6 delphi-xe7
如何通过 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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5268 次 |
| 最近记录: |