2009-12-31 54 views
2

我建立一個使用TProcess稱爲AProcess像這樣的應用程序:隱藏控制檯當執行T加工

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,因爲我不想要控制檯屏幕。然後我想知道如何隱藏這個控制檯屏幕。

+0

@Nathan:您應該刪除Delphi標籤,因爲這個問題與Delphi完全無關。 (Delphi沒有TProcess類。) – 2009-12-31 18:54:03

回答

9

我假設你指的是拉撒路附帶的TProcess組件。要在沒有控制檯的情況下啓動控制檯程序,請在Options屬性中包含poNoConsole標誌。

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

在屬性映射非常貼近於process creation flagsCreateProcess API函數,其中使用標誌爲CREATE_NO_WINDOW可用的選項。