代码之家  ›  专栏  ›  技术社区  ›  Eddie Parker

用于优雅地关闭另一个进程的Win32 API?

  •  1
  • Eddie Parker  · 技术社区  · 16 年前

    或者,是否有一个应用程序已经做到了这一点?tskill对我来说有点太苛刻了。

    4 回复  |  直到 16 年前
        1
  •  5
  •   Kevin Loney    15 年前

    编辑: 我做了一点挖掘,发现了一个 MSDN Article 使用微软推荐的方法。

    由于这是一个windows应用程序,您可以发送 WM_CLOSE TerminateProcess ExitProcess 也可能有令人不快的副作用(参见msdn上的备注部分),包括dll中的全局数据受到破坏以及死锁。

    如果您负责对目标应用程序进行编码,我建议您添加某种形式的内置终止机制,这种机制可以从外部触发(例如,环回地址或管道上的魔法包),这样您就可以确保您的应用程序在正确地清理完后进行了清理。

        2
  •  4
  •   On Freund    16 年前

    根据您的描述,这听起来像一个窗口应用程序。那样的话,你可以寄一封信 WM_CLOSE 按下“X”按钮时模拟行为的消息。

    TerminateProcess ,但这可能也是tskill所做的。

        3
  •  2
  •   Tom    16 年前

    关闭应用程序的更强大命令是:

        PostMessage (myhnd,WM_ENDSESSION,TRUE,ENDSESSION_LOGOFF);
    
        4
  •  1
  •   Community kfsone    7 年前

    my answer to another question ; 虽然它是关于Delphi和服务的,但答案既不是Delphi,也不是特定于服务的。简而言之,没有通用的方法可以优雅地停止程序。该问题的公认答案表明发布了 wm_Close 将消息发送到程序窗口。