Shellexecute 和 Wait 并保持 console-window 打开?

Shellexecute and Wait and keep console-window open?

在Delphi10.1中,我需要执行另一个外部控制台程序,等待另一个外部控制台程序终止。但是另一个外部控制台-window在完成工作后应该保持打开状态。

现在我使用这个 JCL (JEDI) 函数:

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

此函数在等待外部控制台程序终止时运行良好。

但是我怎样才能使外部控制台程序保持其控制台-window 打开?

我经常看到 /k 参数用来保持控制台 window 打开。

但是它怎么能适应这个函数的上下文呢?

因为我的问题是 "But how could it fit in the context of this function?"(其中参数传递给外部程序,如问题的代码示例中所示),答案如下:

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

这是有效的,因为我已经通过测试验证了它。