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
);
这是有效的,因为我已经通过测试验证了它。
在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
);
这是有效的,因为我已经通过测试验证了它。