delphi JvCreateProcess1:如何发送密钥

时间:2011-08-13 15:03:44

标签: delphi

由于JvCreateProcess组件,我运行了一个不可见的DOS进程;工作正常。 我需要通过CTRL + C而不是JvCreateProcess1.terminate(或将CTRL + C序列发送到JVCreateProcess)来停止此过程

有什么想法吗? 问候

1 个答案:

答案 0 :(得分:2)

你可以这样做:

GenerateConsoleCtrlEvent(CTRL_C_EVENT, myProcessInfo.dwProcessId);

但有一些限制:

  • 您只能从共享其控制台的进程中调用GenerateConcolseCltrEvent,其中包含您要发送Ctrl-C-Event的进程。如果您需要捕获生成进程的控制台输出而不与其他衍生进程的控制台输出混合或产生它们的应用程序,那么您不能使用它(直接,请参见下文)。
  • 以这种方式接收Ctrl-C-Event的过程将终止它自己产生的任何进程。 (可能依赖于进程组设置和这些进程之间的控制台共享,当我考虑使用Ctrl-C生成进程时,我没有进一步检查这一点。)

如果你需要从没有与衍生进程共享其控制台的应用程序发送Ctrl-C,你可以创建一个中间进程来执行并告诉它通过其他方式终止(管道,COM,等等)所以它可以将ctrl-c发送到你想要生成的实际进程并通过Ctrl-C终止。

有关此问题的更多信息以及如何创建中间流程,请访问:http://www.microsoft.com/msj/0698/win320698.aspx