TJvCreateProcessでDOSコマンドの実行結果を取得する

JCLのTJvCreateProcessを使ったサンプルプログラムを作成しながら、DOSコマンドの実行結果を取得する方法を紹介します。

フォームの作成

フォームに入力欄(TEdit)、ボタン(TSpeedButton)、リストボックス(TListBox)、TJvCreateProcessを配置します。

01

コマンドプロンプトを起動する

アプリケーションを起動したときに、コマンドプロンプトを起動します。

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;

アプリケーションを起動して、入力欄にコマンドを入力すると、リストボックスにコマンドの実行結果が表示されました。

02

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください