Run Program()は標準入力と標準出力を使用するプログラムを制御します。コマンドラインから実行できるプログラムは、stdin(標準入力)からコマンドを読み取り、stdout(標準出力)に出力を書き込みます。Windowsのコマンドプロンプトcmd.exeは、その一例です。Windowsのメモ帳などのGUIプログラムを起動することもできます。
Run Program(
Executable( "cmd.exe" ),
Options( {"/c", "TaskList\!n"} ),
Read Function( "text" ) // すべてのテキストを戻す
);
上記のスクリプトは、Windowsのプロセス一覧のリストをログに書き込みます。
図8.3 ログ出力
また、cmd.exeを使用せずにプロセス一覧を直接出力させ、データテーブルに読み込むこともできます。
blob = Run Program(
Executable( "tasklist.exe" ),
Read Function( "blob" )
);
Open(
blob,
Columns(
Column( "Image Name", Character, "Nominal" ),
Column(
"PID",
Numeric,
"Continuous",
Format( "最適", 10 )
),
Column( "Session Name", Character, "Nominal" ),
Column(
"Session#",
Numeric,
"Continuous",
Format( "最適", 10 )
),
Column( "Mem Usage", Character, "Nominal" ),
Omitted Column( . )
),
Import Settings(
Fixed Column Widths( 26, 9, 17, 12, 12, 63 ),
Labels( 1 ),
Column Names Start( 2 ),
Data Starts( 4 )
)
);
図8.4 Imported Data from Run Program()
『スクリプト構文リファレンス』のRun Program(Executable("path/filename.exe"), Options({"/a", "/b", "..."}), Read Function(expression), Write Function(expression), Parameter(expression))を参照してください。
メモ: Run Program()を使用してGUIプログラムを起動すると、そのプログラムを終了するまでJMPには制御が戻りません。