13

我正在尝试使用 ShellExecute 从 Delphi XE2 中的另一个应用程序“one.exe”执行 EXE“two.exe”。

ShellExecute(0, 'open', 'two.exe', nil, nil, SW_NORMAL);

它工作得很好,但是每当我从任务管理器的进程选项卡中终止应用程序“one.exe”(父应用程序)时,使用“结束进程树”选项,应用程序“two.exe”也会被终止。

如何防止我的 ShellExecuted 应用程序像这样被终止?

4

2 回答 2

11

好的,不是很好的解决方案......但测试成功;o)

ShellExecute(0, 'open', 'cmd', 
  PChar('/C  start "" "' + Application.ExeName + '"'), nil, SW_HIDE);

在此处输入图像描述

第一个是手动启动...他的孩子定期调用 shellexecute... 最后一个,使用 shellexecute + cmd 技巧...

/C 解释

于 2012-05-15T17:41:19.487 回答
9

我认为您需要创建一个中间过程,然后生成two.exe. 然后您需要立即终止中间进程,此时与原始进程之间的关系two.exe被打破。

于 2012-05-15T17:19:14.833 回答