Delphi Mac OSでのShellExecute

Delphi XE4 ヘッダ

Delphiからでブラウザを開きたいときなど、ShellExecuteを使う必要があります。

FireMonkeyプロジェクトでも、WindowsならusesにWinapi.ShellAPI, Winapi.Windowsを追加し、

ShellExecute(0, 'OPEN', PChar(url), '', '', SW_SHOWNORMAL);

で使用できます。

ところでMac OSではどうやるんでしょう?

_system

Mac OSではPosix.stdlibを使います。

uses に Posix.stdlib を追加。

_system(PAnsiChar('open ' + {コマンド} ));

{コマンド}の部分にURLを書けばSafariが起動してくれます。
カンタンでうれしい!

手続きにまとめる

OSの違いをコンパイラ指令にまとめて記述し、便利にしてみます。

uses

{$IFDEF MSWINDOWS}
Winapi.ShellAPI, Winapi.Windows
{$ENDIF}
{$IFDEF POSIX}
Posix.stdlib
{$ENDIF}

フォーム

procedure BrowserExecute(url: String);

など手続きを追加。

実現部

procedure TForm1.BrowserExecute(url: String);
begin
{$IFDEF MSWINDOWS}
ShellExecute(0, 'OPEN', PChar(url), '', '', SW_SHOWNORMAL);
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
_system(PAnsiChar('open ' + AnsiString(url)));
{$ENDIF POSIX}
end;

これで呼び出し部分で常にBrowserExecuteを使えば、OSを意識せずに立ち上げられますね。