JCLのTJvCreateProcessを使ったサンプルプログラムを作成しながら、DOSコマンドの実行結果を取得する方法を紹介します。
フォームの作成
フォームに入力欄(TEdit)、ボタン(TSpeedButton)、リストボックス(TListBox)、TJvCreateProcessを配置します。
コマンドプロンプトを起動する
アプリケーションを起動したときに、コマンドプロンプトを起動します。
uses JclSysInfo;
procedure TForm1.FormShow(Sender: TObject);
var
CommandLine: string;
begin
// コマンドプロンプトのパス
JclSysInfo.GetEnvironmentVar('COMSPEC', CommandLine);
JvCreateProcess1.CommandLine := CommandLine;
// コマンドプロンプトの出力をOnReadイベントで受け取る
JvCreateProcess1.ConsoleOptions := JvCreateProcess1.ConsoleOptions + [coRedirect];
// コンソール画面を表示しない
JvCreateProcess1.StartupInfo.ShowWindow := swHide;
JvCreateProcess1.StartupInfo.DefaultWindowState := False;
// バッチファイルを実行する
JvCreateProcess1.Run;
end;
コマンドプロンプトの出力データを表示する
コマンドプロンプトの出力データをリストボックスに表示します。
procedure TForm1.JvCreateProcess1Read(Sender: TObject; const S: string;
const StartsOnNewLine: Boolean);
begin
if StartsOnNewLine then
ListBox1.Items.Add(S)
else
ListBox1.Items[ListBox1.Count - 1] := S
end;
アプリケーションを起動すると、コマンドプロンプトの出力データがリストボックスに表示されることが確認できます。
コマンドプロンプトに入力データを送信する
ボタンを押したときに入力欄(TEdit)に入力されたデータをコマンドプロンプトに送信します。
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
JvCreateProcess1.WriteLn(AnsiString(Edit1.Text));
end;
アプリケーションを起動して、入力欄にコマンドを入力すると、リストボックスにコマンドの実行結果が表示されました。