Delphi Shellexecute并等待并保持控制台窗口打开?
在Delphi10.1中,我需要执行另一个外部控制台程序,并等待另一个外部控制台程序终止。但另一个外部控制台窗口在完成工作后应保持打开状态 现在我使用这个JCL(绝地)函数:Delphi Shellexecute并等待并保持控制台窗口打开?,delphi,shellexecute,delphi-10.1-berlin,jedi,Delphi,Shellexecute,Delphi 10.1 Berlin,Jedi,在Delphi10.1中,我需要执行另一个外部控制台程序,并等待另一个外部控制台程序终止。但另一个外部控制台窗口在完成工作后应保持打开状态 现在我使用这个JCL(绝地)函数: ThisShellExecResult := JclShell.ShellExecAndWait( ThisProgram, // Filename ThisParameters, // Parameters '', // Verb (Operation) ThisSho
ThisShellExecResult := JclShell.ShellExecAndWait(
ThisProgram, // Filename
ThisParameters, // Parameters
'', // Verb (Operation)
ThisShowCommand, // ShowCommand (SW_SHOW or SW_HIDE)
ThisDirectory, // Directory
);
此函数在等待外部控制台程序终止时工作正常
但是如何使外部控制台程序保持其控制台窗口打开
我经常看到提到一个/k
参数来保持控制台窗口打开
但是它如何能够适应这个函数的上下文呢?正如我的问题是“但是它如何适应这个函数的上下文呢?”(在这个问题的代码示例中,参数被传递给外部程序),下面是答案:
ThisShellExecResult := JclShell.ShellExecAndWait(
'cmd.exe', // Filename
'/K ' + JclStrings.StrQuote(ThisProgram, '"') + ' ' + ThisParameters, // Parameters
'', // Verb (Operation)
ThisShowCommand, // ShowCommand (SW_SHOW or SW_HIDE)
ThisDirectory // Directory
);
我已经通过测试验证了这一点。
/K
是cmd.exe
的命令行开关。您可以使用ShellExecute/Ex()
或CreateProcess()
运行cmd.exe/K otherprogram.exe