执行TProcess时隐藏控制台

Nat*_*pos 2 console process lazarus

我正在构建一个使用这样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;
Run Code Online (Sandbox Code Playgroud)

但是当我点击按钮时,我得到了一个控制台窗口几秒钟,然后它退出并显示该过程的所有输出OutputMemo,但我推迟了TMemo因为我不想要控制台屏幕.然后我想知道如何隐藏这个控制台屏幕.

Rob*_*edy 10

我假设你指的TProcess是Lazarus附带的组件.要在没有控制台的情况下启动控制台程序,请poNoConsoleOptions属性中包含该标志.

AProcess.Options := AProcess.Options + [poNoConsole];
Run Code Online (Sandbox Code Playgroud)

在属性映射提供非常接近的选项进程创建标志CreateProcessAPI函数,该标志使用的是CREATE_NO_WINDOW.