Firemonkey应用程序 - 在OS X下运行时启动外部应用程序

时间:2017-04-28 06:10:09

标签: macos delphi firemonkey

我有一个Firemonkey应用程序(Delphi Berlin 10.1),并希望从中启动一个外部程序。 (外部程序是一个帮助文件查看器。)

当我编译Win32时,我可以简单地执行此操作(当外部程序与主可执行文件位于同一文件夹中时):

path := ExtractFilePath(ParamStr(0));
path := path + 'MyViewer.exe';
ShellExecute(0, 'open', PWideChar(path), nil, nil, SW_SHOWNORMAL);

当我为OS X编译时,我有外部程序的Mac版本MyViewer.app。我在哪里放置它?如何将其添加到PAServer创建的包中?启动它需要什么代码?

1 个答案:

答案 0 :(得分:2)

  1. 这显示了Windows和OSX的等效项:

    uses
    {$IFDEF MSWINDOWS}
    winapi.shellapi
    {$ENDIF}
    {$IFDEF POSIX}
    Posix.Stdlib
    {$ENDIF POSIX}
    ;
    
    function ExecuteFile(const filename, Params, DefaultDir: string;
          ShowCmd: integer): THandle;
      begin
        {$IFDEF MSWINDOWS}
          result := ShellExecute(0, 'Open', PChar(filename), PChar(Params),
            PChar(DefaultDir), ShowCmd);
        {$ENDIF}
        {$IFDEF MACOS}
          _system(PAnsiChar('open ' + AnsiString(filename)));
        {$ENDIF}
      end;
    
  2. 我通过在第一个捆绑包之后将另一个签名捆绑包放在第一个捆绑包内的任何位置来完成此操作。我认为你可以通过使用Delphi中的Deploy页面将其他应用程序放入bundle中,只需将其他可执行文件(不是bundle)放在与Delphi放置主应用程序代码相同的位置。