我正在构建一个使用名为 AProcess
的 TProcess
的应用程序,如下所示:
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/