2017-10-08 381 views
0

在Delphi 10.1中,我需要執行另一個外部控制檯程序,並等待其他外部控制檯程序終止。但其他外部控制檯窗口在完成其工作後應保持打開狀態。Shellexecute並等待並保持控制檯窗口打開?

現在我用這個JCL(JEDI)功能:

ThisShellExecResult := JclShell.ShellExecAndWait(
    ThisProgram,  // Filename 
    ThisParameters, // Parameters 
    '',    // Verb (Operation) 
    ThisShowCommand, // ShowCommand (SW_SHOW or SW_HIDE) 
    ThisDirectory, // Directory 
); 

此功能以及它等待,直到外部控制檯程序終止。

但我怎樣才能讓外部控制檯程序保持其控制檯窗口打開?

我經常看到提到的一個/k參數來保持控制檯窗口打開。

但是它如何適應這個函數的上下文呢?

+0

'/ K'是'cmd.exe'的命令行開關。你可以使用'ShellExecute/Ex()'或'CreateProcess()'來運行'cmd.exe/K otherprogram.exe' –

回答

0

正如我的問題是「但它如何適合這個功能的上下文?」 (其中的參數傳遞給外部程序,在從問題的代碼示例),這裏是答案:

ThisShellExecResult := JclShell.ShellExecAndWait(
    'cmd.exe',  // Filename 
    '/K ' + JclStrings.StrQuote(ThisProgram, '"') + ' ' + ThisParameters, // Parameters 
    '',    // Verb (Operation) 
    ThisShowCommand, // ShowCommand (SW_SHOW or SW_HIDE) 
    ThisDirectory // Directory 
); 

這工作,因爲我已經通過試驗證實它。

相關問題