2

私は次のようなTProcess呼び出しを使用するアプリケーションを構築していますAProcess

procedure TFormMain.btCompileClick(Sender: TObject);
begin
  AProcess := TProcess.Create(nil);
  try
    AProcess.CommandLine := 'gcc.exe "' + OpenDialog1.FileName + '"'
      + ' -o "' + OpenDialog2.FileName + '"';
    AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
    AProcess.Execute;
    OutputMemo.Lines.BeginUpdate;
    OutputMemo.Lines.Clear;
    OutputMemo.Lines.LoadFromStream(AProcess.Output);
    OutputMemo.Lines.EndUpdate;
  finally
    AProcess.Free;
  end;
end;

しかし、ボタンをクリックすると、コンソールウィンドウが数秒間表示されて終了し、プロセスのすべての出力がに表示されますが、コンソール画面が必要ないため、ここに配置しOutputMemoました。TMemo次に、このコンソール画面を非表示にする方法を知りたいです。

4

1 に答える 1

10

TProcessLazarusに付属しているコンポーネントを参照していると思います。コンソールなしでコンソールプログラムを起動するにはpoNoConsole、プロパティにフラグを含めOptionsます。

AProcess.Options := AProcess.Options + [poNoConsole];

そのプロパティで使用可能なオプションは、API関数のプロセス作成フラグに非常に密接にマップされます。使用するフラグはです。CreateProcessCREATE_NO_WINDOW

于 2009-12-31T18:51:42.487 に答える