Tips

LAUNCH EXTERNAL PROCESSを非同期モードで使用する

日付2009/07/06
ID75815 (英語原文参照)
バージョン11.4
プラットフォームWin

LAUNCH EXTERNAL PROCESSは、外部アプリケーションを実行するためのコマンドで、しばしばMicrosoft Officeアプリケーションを起動するために使用されています。とはいえ、使い方が適切でないと、たとえばExcelが起動している間は4Dが反応しない、といった状況に陥ります。

仮に次のようなコードを使用し、Windows XP環境でExcel 2003を起動したとしましょう。確かにLAUNCH EXTERNAL PROCESSでExcelは起動しますが、Excelを閉じるまではALERTコマンドに制御が移りません。

C_TEXT($command)

$command:="C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE"
LAUNCH EXTERNAL PROCESS($command)
ALERT("Done")

理由は、LAUNCH EXTERNAL PROCESSコマンドが同期モードで動作しており、4Dがコマンドからの返り値を待っているからです。LAUNCH EXTERNAL PROCESSコマンドは、非同期モードで実行することもできるので、そのようにすれば、コマンドの実行結果に関係なく、メソッドの実行を続けることができます。

LAUNCH EXTERNAL PROCESSコマンドを非同期モードで実行するには、SET ENVIRONMENT VARIABLEコマンドに環境変数名"_4D_OPTION_BLOCKING_EXTERNAL_PROCESS"と値"false"を渡します。前述のコードは、次のように書き換えることができます。

C_TEXT($command)

$command:="C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE"
SET ENVIRONMENT VARIABLE("_4D_OPTION_BLOCKING_EXTERNAL_PROCESS";"false")
LAUNCH EXTERNAL PROCESS($command)
ALERT("Done")