执行TProcess时隐藏控制台

时间:2009-12-31 18:31:27

标签: process console lazarus

我正在构建一个使用名为TProcess的{​​{1}}的应用程序,如下所示:

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

1 个答案:

答案 0 :(得分:9)

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

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

该属性中可用的选项与process creation flags API函数的CreateProcess非常接近,其中要使用的标记为CREATE_NO_WINDOW