| 4D v18LAUNCH EXTERNAL PROCESS | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 LAUNCH EXTERNAL PROCESS 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| LAUNCH EXTERNAL PROCESS ( fileName {; inputStream {; outputStream {; errorStream}}}{; pid} ) | ||||||||
| 引数 | 型 | 説明 | ||||||
| fileName | 文字 |   | ファイルパスと起動するファイルの引数 | |||||
| inputStream | 文字, BLOB |   | 入力ストリーム(stdin) | |||||
| outputStream | 文字, BLOB |   | 出力ストリーム(stdout) | |||||
| errorStream | 文字, BLOB |   | エラーストリーム(stderr) | |||||
| pid | 倍長整数 |   | 外部プロセスの固有識別子 | |||||
LAUNCH EXTERNAL PROCESSコマンドを使用して、macOSとWindowsで4Dから外部プロセスを起動させることができます。
macOSでは、コマンドを用いてターミナルから起動できる実行可能なアプリケーションへアクセスできます。
実行するアプリケーションの固定されたファイルパスと (必要に応じて) 引数を引数fileNameに渡します。
macOSではアプリケーション名を渡すこともできます。4Dは環境変数PATHを使用して、実行可能ファイルを探します。
警告: このコマンドは実行可能なアプリケーションのみを起動することができます。シェル (コマンドインタプリタ) の一部である命令は実行できません。例えば、macOSではこのコマンドを用いてecho命令やインダイレクトを実行することはできません。
オプションのinputStream引数は外部プロセスのstdinを格納します。コマンドが実行されると、引数outputStreamとerrorStream (渡した場合) は外部プロセスのstdoutとstderrをそれぞれ返します。(例えばピクチャのような)バイナリデータを扱っている場合、文字列の代わりにBLOB引数を使用します。
4D ではLAUNCH EXTERNAL PROCESS のコンテキストで使用可能で、SET ENVIRONMENT VARIABLE コマンドを使用して設定可能な3つの特定の環境変数を提供しています:
これらのカレントプロセスでの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 \"\" \""+$docname+"\"")
 End if11. 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が設定されます。
	プロダクト: 4D
	テーマ: ツール
	番号: 
        811
        
        
        
	
	初出: 4D 2004
	変更: 4D v15 R4
	
	
	
	
	
	
	
	
	
	
	ランゲージリファレンス ( 4D v18)
	
	
	
	
	
 コメントを追加
コメントを追加