Shellexecute和Wait并保持控制台窗口打开?

时间:2017-10-08 20:36:31

标签: delphi shellexecute delphi-10.1-berlin jedi

在Delphi 10.1中,我需要执行另一个外部控制台程序并等待其他外部控制台程序终止。但是其他外部控制台窗口在完成工作后应保持打开状态。

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

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

此功能在等待外部控制台程序终止时效果很好。

但是如何让外部控制台程序保持其控制台窗口打开?

我经常看到提到的/k参数可以打开控制台窗口。

但它怎么能适合这个功能?

1 个答案:

答案 0 :(得分:0)

正如我的问题是"但它怎么能适合这个功能的背景?" (其中参数传递给外部程序,如问题中的代码示例),这里是答案:

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

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