从Delphi通过命令行启动应用程序后关闭CMD窗口

use*_*478 0 delphi delphi-xe5

我正在尝试执行以下操作.它工作但cmd窗口等待acrobat.exe在退出之前完成执行.我必须使用这种启动方法,因为我打算将来传递某些命令行参数.

cmdLineString := Format('/c ""%s" "%s""',['C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Acrobat.exe', 'F:\Android-interview\Packt.Android.3.0.Application.Development.Cookbook.Jul.2011.ISBN.1849512949.pdf']);
ShellExecute(Handle, 'open', 'cmd.exe', PChar(CmdLineString), nil, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 5

有很多方法可以改善这个:

  1. 不要用ShellExecute.这样做很诱人,因为打电话很简单.但是,它不是很灵活.请CreateProcess改用.
  2. 如果必须隐藏控制台窗口,请将CREATE_NO_WINDOW标志传递给CreateProcess.
  3. 也就是说,没有必要在cmd这里使用.您无需创建创建其他流程的流程.实际上这样做会使传递参数变得更加困难.直接创建Acrobat进程.剪出中间人.