ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v20 R7
LAUNCH EXTERNAL PROCESS

LAUNCH EXTERNAL PROCESS 


 

LAUNCH EXTERNAL PROCESS ( fileName {; inputStream {; outputStream {; errorStream}}}{; pid} ) 
引数   説明
fileName  文字 in ファイルパスと起動するファイルの引数
inputStream  文字, BLOB in 入力ストリーム(stdin)
outputStream  文字, BLOB in 出力ストリーム(stdout)
errorStream  文字, BLOB in エラーストリーム(stderr)
pid  倍長整数 in 外部プロセスの固有識別子

4D v19 R4 以降、外部プロセスを実行して管理するためにはSystemWorker class の使用が推奨されます。しかしながら、このコマンドも引き続きサポートされます。

説明  

LAUNCH EXTERNAL PROCESSコマンドを使用して、macOSとWindowsで4Dから外部プロセスを起動させることができます。
macOSでは、コマンドを用いてターミナルから起動できる実行可能なアプリケーションへアクセスできます。

実行するアプリケーションの固定されたファイルパスと (必要に応じて) 引数を引数fileNameに渡します。
macOSではアプリケーション名を渡すこともできます。4Dは環境変数PATHを使用して、実行可能ファイルを探します。

警告: このコマンドは実行可能なアプリケーションのみを起動することができます。シェル (コマンドインタプリタ) の一部である命令は実行できません。例えば、macOSではこのコマンドを用いてecho命令やインダイレクトを実行することはできません。

オプションのinputStream引数は外部プロセスのstdinを格納します。コマンドが実行されると、引数outputStreamerrorStream (渡した場合) は外部プロセスのstdoutstderrをそれぞれ返します。(例えばピクチャのような)バイナリデータを扱っている場合、文字列の代わりにBLOB引数を使用します。

4D ではLAUNCH EXTERNAL PROCESS のコンテキストで使用可能で、SET ENVIRONMENT VARIABLE コマンドを使用して設定可能な3つの特定の環境変数を提供しています:

  • _4D_OPTION_CURRENT_DIRECTORY: 開始する外部プロセスのカレントディレクトリを設定するために使用します。必ずディレクトリ (macOSではHFSタイプのシンタックス、WindowsではDOS) のパス名をvarValue に渡してください。
  • _4D_OPTION_HIDE_CONSOLE (Windows のみ):DOSコンソールのウィンドウを隠すために使用します。今コンソールを隠すには"True" をvarValue に渡します。コンソールを表示するには"False" を渡します。
  • _4D_OPTION_BLOCKING_EXTERNAL_PROCESS: 非同期モードで外部プロセスを実行するために使用します。この場合他のアプリケーションをブロックしません。非同期実行を設定するには"False" を、同期実行を設定するには"True"(デフォルト値)をvarValue に渡してください。この変数に関しては、varValue に""(空の文字列)を渡しても何の変化もありません。
    環境変数を、SET ENVIRONMENT VARIABLE コマンドを使用して"false" に設定した場合(非同期実行)、outputStream および errorStream 引数は返されません。

これらのカレントプロセスでのLAUNCH EXTERNAL PROCESS の次の呼び出しから有効です。

pid引数を渡した場合、pid引数(倍長整数型)は_4D_OPTION_BLOCKING_EXTERNAL_PROCESSオプションの状態に関わらず、コマンドをローンチするのに作成したプロセスのシステムレベルのIDを返します。この情報により、作成した外部プロセスとその後やりとり(例えば中止等)するのが容易になります。プロセスのローンチに失敗した場合、pid引数は返されません。

Application/UtilitiesフォルダにあるmacOS ターミナルを使用します。

1. ファイルに対してパーミッションを変更する(chmod はファイルアクセスを変更するために使用するmacOS コマンドです)

 LAUNCH EXTERNAL PROCESS("chmod +x /folder/myfile.txt")

2. テキストファイルを編集する(catはファイルを編集するために使用するmacOS マンドです)。この例ではコマンドの完全なアクセスパスが渡されています。

 C_TEXT(input;output)
 input:=""
 LAUNCH EXTERNAL PROCESS("/bin/cat /folder/myfile.txt";input;output)

3. "Users" フォルダの内容を取得する(ls -lはDOSのdir コマンド に相当するmacOS コマンドです)

 C_TEXT($In;$Out)
 LAUNCH EXTERNAL PROCESS("/bin/ls -l /Users";$In;$Out)

4. 独立している"グラフィック" アプリケーションを起動させるには、openシステムコマンドを使用するのが望ましいです(この場合、LAUNCH EXTERNAL PROCESS ステートメントはアプリケーションをダブルクリックすることと同じ効果があります) 。

 LAUNCH EXTERNAL PROCESS("open /Applications/Calculator.app")

5. NotePadを開く

 LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe")

6. Notepadを開き、特定のドキュメントを開く

 LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe C:\\Docs\\new folder\\res.txt")

7. MicrosoftR WordRアプリケーションを起動させて、特定のドキュメントを開く(2つの""を使用)

 $mydoc:="C:\\Program Files\\Microsoft Office\\Office10\\WINWORD.EXE \"C:\\Documents and Settings\\Mark\\Desktop\\MyDocs\\New folder\\test.xml\""
 LAUNCH EXTERNAL PROCESS($mydoc;$tIn;$tOut)

8. Perlスクリプトを実行する(ActivePerlを必要とします):

 C_TEXT($input;$output)
 SET ENVIRONMENT VARIABLE("myvariable";"value")
 LAUNCH EXTERNAL PROCESS("D:\\Perl\\bin\\perl.exe D:\\Perl\\eg\\cgi\\env.pl";$input;$output)

9. コンソールを表示せずにカレントディレクトリでコマンドを実行させる

 SET ENVIRONMENT VARIABLE("_4D_OPTION_CURRENT_DIRECTORY";"C:\\4D_VCS")
 SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true")
 LAUNCH EXTERNAL PROCESS("mycommand")

10. ユーザが選択した外部ドキュメントをWindowsで開く

 $docname:=Select document("";"*.*";"Choose the file to open";0)
 If(OK=1)
    SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true")
    LAUNCH EXTERNAL PROCESS("cmd.exe /C start \"\" \""+document+"\"")
 End if

11. Windows上でプロセスの一覧をリクエスト:

 C_LONGINT($pid)
 C_TEXT($stdin;$stdout;$stderr)
 
 LAUNCH EXTERNAL PROCESS("tasklist";$pid//PIDのみを取得
 LAUNCH EXTERNAL PROCESS("tasklist";$stdin;$stdout;$stderr;$pid//全ての情報を取得

コマンドが正しく実行されるとシステム変数OKは1に設定されます。そうでなければ (ファイルが見つからない、メモリが足りないなど) 0が設定されます。



参照 

OPEN URL
SET ENVIRONMENT VARIABLE

 
プロパティ 

プロダクト: 4D
テーマ: ツール
番号: 811

このコマンドはOKシステム変数を更新しますThis command can be run in preemptive processes

 
ページの目次 
 
履歴 

初出: 4D 2004
変更: 4D v15 R4

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v20 R7)