process - 执行 TProcess 时隐藏控制台

标签 process console lazarus

我正在构建一个使用名为 AProcessTProcess 的应用程序,如下所示:

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 因为我不需要控制台屏幕。然后我想知道如何隐藏这个控制台屏幕。

最佳答案

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

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

该属性中的可用选项与 process creation flags 非常接近。对于 CreateProcess API 函数,其中要使用的标志是 CREATE_NO_WINDOW

关于process - 执行 TProcess 时隐藏控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1986557/

相关文章:

pascal - fpgui和lcl和qt,各有什么优缺点?

c++ - 执行命令并获得输出 : popen and pclose undefined

c# - 从重定向进程中读取字节数组

Android Developer Console 屏幕截图被裁剪。还有谁有相同的问题吗?建议?

php - html/php调试

repository - 是否有中央 FreePascal/Lazarus 组件存储库?

java - ProcessBuilder 重定向输出

ruby 列表子 pids

c# - 是否可以在控制台窗口中运行 Windows 应用程序?

delphi - 使用 Lazarus 和 FreePascal 获取 Linux 系统信息