我正在构建一个使用名为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
因为我不想要控制台屏幕。然后我想知道如何隐藏这个控制台屏幕。
答案 0 :(得分:9)
我假设您指的是Lazarus附带的TProcess
组件。要在没有控制台的情况下启动控制台程序,请在poNoConsole
属性中包含Options
标志。
AProcess.Options := AProcess.Options + [poNoConsole];
该属性中可用的选项与process creation flags API函数的CreateProcess
非常接近,其中要使用的标记为CREATE_NO_WINDOW
。