4D v16.3

LAUNCH EXTERNAL PROCESS

ホーム

 
4D v16.3
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 外部プロセスの固有識別子

説明   

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

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

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

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

: SET ENVIRONMENT VARIABLEコマンド経由(非同期実行) で環境変数_4D_OPTION_BLOCKING_EXTERNAL_PROCESS を使用した場合、引数outputStreamerrorStreamは返されません。

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

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

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

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

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

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

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

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

4. 独立している"グラフィック" アプリケーションを起動させるには、openシステムコマンドを使用するのが望ましいです(この場合、LAUNCH EXTERNAL PROCESS ステートメントはアプリケーションをダブルクリックすることと同じ効果があります) 。
注: ファイルパスがシステムシンタックスで表されている場合には、(Convert path system to POSIX コマンドを使うなどして) POSIXシンタックスに変換しておく必要があります。

 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 \"\" \""+$docname+"\"")
 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が設定されます。



参照 

SET ENVIRONMENT VARIABLE

 
プロパティ 

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

このコマンドはOKシステム変数を更新します

 
履歴 

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

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)