1

我正在寻找一种方法来关闭另一个 Windows 应用程序。有没有办法做到这一点?

理想情况下,我想要基本上模仿 ALT-F4 的东西,或者按右上角的“X”或类似的东西。

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

4

4 回答 4

5

编辑:我做了一点挖掘,发现了一篇微软推荐方法的MSDN 文章

由于这是一个 Windows 应用程序,您可以将WM_CLOSE消息发送到主窗口,但请记住,如果应用程序覆盖 WM_CLOSE 消息的处理,您可能会得到意想不到的结果。还要记住,使用诸如TerminateProcessExitProcess之类的 win32 函数也会产生令人不快的副作用(请参阅 msdn 上的备注部分),包括 dll 中的全局数据受到损害以及死锁。

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

于 2009-02-03T07:32:31.070 回答
4

根据您的描述,这听起来像是一个窗口应用程序。在这种情况下,您可以向它发送一条WM_CLOSE消息来模拟按下“X”按钮时的行为。

另一种选择是使用TerminateProcess,但这可能也是 tskill 所做的。

于 2009-02-03T06:55:38.837 回答
2

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

    PostMessage (myhnd,WM_ENDSESSION,TRUE,ENDSESSION_LOGOFF);
于 2009-02-03T08:00:13.653 回答
1

我将首先向您推荐我对另一个问题的回答;尽管它是关于 Delphi 和服务的,但答案既不是 Delphi 特定的,也不是服务特定的。简而言之,没有通用的方法可以优雅地停止程序。该问题的公认答案演示了将wm_Close消息发布到程序的窗口。

于 2009-02-03T07:15:35.880 回答