现在知道另一个进程的句柄。用TerminateProcess 可以强行中止另一个进程,但这不是我需要的。我需要另一个进程可以作一些结束处理,本来以为ExitProcess可以,但一查MSDN,发现ExitProcess只能用在自身的进程上。有什么方法可以友好的中止另一个进程呢?

解决方案 »

  1.   

    不是GUI进程,是一个控制台进程,不能用消息。
    我想用GenerateConsoleCtrlEvent模拟一个ctrl-c命令退出,但总是不能成功,不知为何
      

  2.   

    我的意思是进程间通信
    http://hi.baidu.com/walfer/blog/item/4cf7fb03d542fe773812bb53.html
      

  3.   

    多谢回答。但进程通信中另一方程序必须能够主动接收消息才行。
    但这个控制台程序不是我写的,比如"ping 127.0.0.1 -t"命令,可以一直的执行下去,
    如果要中止必须发送一个ctrl-break命令过去。我就是想在程序里仿真这个命令,不知道如何做
      

  4.   

    再把问题描述一下:
    我在程序里创建了一个子进程,是基于控制台的,现在我想仿真一个Ctrl-C 或者 Ctrl-Break命令,强制使那个子进程退出,不知道该怎么做。用TerminateProcess是不行的(太霸道了),用ExitProcess也不行(只能用在自已身上)
      

  5.   

    WaitForSingleObjet
    等待进程结束或者还有一种方法就是,在线程体或者进程体里面,加一个标记,标记是否是存活状态,把这个变量置为false,程序自动结束
      

  6.   

    子进程既然不是你的写的话:
    1.如果子进程是持续运行,除非你知道那个控制台程序退出的接口,否则只有terminate
    2.如果是会自动退出的,就用WaitForSingleObject等待退出就可以了