我正在寻找一种方法来关闭另一个 Windows 应用程序。有没有办法做到这一点?
理想情况下,我想要基本上模仿 ALT-F4 的东西,或者按右上角的“X”或类似的东西。
或者,是否有一个应用程序已经这样做了?tskill 对于我的想法来说有点太苛刻了。
编辑:我做了一点挖掘,发现了一篇微软推荐方法的MSDN 文章。
由于这是一个 Windows 应用程序,您可以将WM_CLOSE消息发送到主窗口,但请记住,如果应用程序覆盖 WM_CLOSE 消息的处理,您可能会得到意想不到的结果。还要记住,使用诸如TerminateProcess和ExitProcess之类的 win32 函数也会产生令人不快的副作用(请参阅 msdn 上的备注部分),包括 dll 中的全局数据受到损害以及死锁。
如果您负责对目标应用程序进行编码,我建议您添加某种形式的内置终止机制,可以在外部触发(例如环回地址或管道上的魔术包),这样您就可以确保您的应用程序已自行清理适当地。
根据您的描述,这听起来像是一个窗口应用程序。在这种情况下,您可以向它发送一条WM_CLOSE消息来模拟按下“X”按钮时的行为。
另一种选择是使用TerminateProcess,但这可能也是 tskill 所做的。
关闭应用程序更强大的命令是:
PostMessage (myhnd,WM_ENDSESSION,TRUE,ENDSESSION_LOGOFF);
我将首先向您推荐我对另一个问题的回答;尽管它是关于 Delphi 和服务的,但答案既不是 Delphi 特定的,也不是服务特定的。简而言之,没有通用的方法可以优雅地停止程序。该问题的公认答案演示了将wm_Close
消息发布到程序的窗口。