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

我假设您指的TProcess是 Lazarus 附带的组件。要使控制台程序在没有控制台的情况下启动,请在属性中包含poNoConsole标志。Options

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

该属性映射中可用的选项与 API 函数的进程创建标志非常接近,其中要使用的标志.CreateProcessCREATE_NO_WINDOW

于 2009-12-31T18:51:42.487 回答