When the solution matters

FAQ Tips Tech Note 一般News サービス内容 お申し込み テクニカルサポート
トレーニング 4D News

LAUNCH EXTERNAL PROCESSコマンドでファイルを開くにはどうすれば良いのですか

LAUNCH EXTERNAL PROCESSコマンドは、ファイルを開くコマンドではなく実行するコマンドです。

背景

特定のファイル形式(たとえばPDFファイル)をデフォルトのアプリケーションを起動して開きたい場合、または特定のファイル形式(たとえばタブ区切りの標準テキストファイル)を特定のアプリケーション(たとえばMicrosoft Excel)を起動して開きたい場合、以前はAP_SublaunchやAP_ShellExecuteが使用されていました。

いずれのプラグインコマンドも現在では古いものであり、4D v11 SQLでは4D Packから除去されました。いずれも、LAUNCH EXTERNAL PROCESSコマンドで代用することができます。

同期モードと非同期モード

LAUNCH EXTERNAL PROCESSは、1個または4個の引数を渡して呼び出すコマンドです。本来の用途は、4個すべての引数を使用し、返り値とエラーストリームを受け取る関数としての外部プロセスコールですが、簡易的な用法として、1個の引数だけを使用し、単純に外部コマンドを実行することもできます。

Mac OS Xの場合

Mac OS Xの場合、LAUNCH EXTERNAL PROCESSは、Darwin(UNIX)コマンドをコールすることに相当します。つまり「ターミナル」のコマンドラインに命令を入力することに対応します。使用にあたっては、次の点に留意して下さい。

4D 2004

第一引数をテキスト型で渡した場合、4Dのローカルエンコーディング(日本語版はShift_JIS)からUTF-8への変換が内部的に行なわれます。

第一引数をBLOB型で渡した場合、こうした変換は行なわれません。

4D v11 SQL(Unicodeモード)

第一引数をテキスト型で渡した場合、4Dのローカルエンコーディング(国際的にUTF-16)からUTF-8への変換が内部的に行なわれます。

第一引数をBLOB型で渡した場合、こうした変換は行なわれません。

パススタイルについて

Darwin(UNIX)が期待しているのは、Mac OS Xで親しまれているHFSスタイル(コロン区切り)ではなく、POSIXスタイル(スラッシュ区切り)です。

LAUNCH EXTERNAL PROCESSは、POSIXスタイルのパスを受け取ります。

HFSスタイルのパスは、基本的に次の方法でPOSIXに変換することができます。

  1. コロンをスラッシュに置換します。
  2. 半角スペースは「バックスラッシュ+スペース」に置換します。
  3. 起動ボリュームであればボリューム名を除去、違えば"/Volumes/"を冒頭に追加します。

コーディング例

アプリケーションを暗示的に指定

AP_SublaunchやAP_ShellExecuteのように、アプリケーションを特に指定せず、システムのデフォルトアプリケーションでファイルを開きたい場合、Darwinのコマンドopenをオプションなしで使用します。

LAUNCH EXTERNAL PROCESS("open "+$_POSIX_style_)

アプリケーションを明示的に指定

アプリケーションをフルパスで指定する場合、Darwinのコマンドopenをオプション"-a"で使用します。

LAUNCH EXTERNAL PROCESS("open -a /Applications/Firefox.app/ "+$_POSIX_style_)

アプリケーションをバンドル識別子で指定

Mac OS Xでは、置かれた場所に関係なく、アプリケーションはバンドル識別子で指定することができます。バンドル識別子は、アプリケーションパッケージ内のinfo.plistファイルで定義されており、Uniform Type Identifier (UTI)と呼ばれる形式の文字列です。

アプリケーションをバンドル識別子で指定する場合、Darwinのコマンドopenをオプション"-b"で使用します。

LAUNCH EXTERNAL PROCESS("open -b com.microsoft.excel "+$_POSIX_style_)

International | 会社案内 | 採用情報 | お客様窓口 | サイトマップ | © 4D Japan 1995-2008 | フォントサイズ:[A] [A] [A] | Print this page