如何在Qt程序里关闭另一个程序?

好象Qt是没有提供好的方案了。
(1)另一个程序在运行时,在某个地方写一些特殊的东西,Qt程序可以根据这些特殊的
东西进行判断该程序是否正在运行。正如qtcn群上一位同志讲的,如果该程序没有正常
退出的话,Qt程序的判断就会有问题。此外,这种solution的一个前提是Qt程序和该程
序都应该是有源码可以修改的。一个好处是绝对是cross platform的。
(2)应用独立于platform的代码。比如可以用win32 api来枚举进程,但问题是相对比较
复杂,比如在winxp和nt上的枚举相关api都不一样,在linux, mac等平台上的实现更是
不容易。
(3)msdn上给出一种相对简便的方法(http://support.microsoft.com/?kbid=153463),
也是应用win32 api。先使用findWindow,输入窗口的title,得到该程序的handler,
然后向应用postMessage向该程序发送WM_QUIT(eggheadcafe.com上有人建议用
WM_CLOSE
(http://support.microsoft.com/default.aspx?scid=kb;en-us;178893)),来关闭该
程序。缺陷,一个也是独立于平台的,另外一个,应用FindWindow,不排除有窗口
title相同的程序,这样返回的handler未必正确。

Leave a Reply

Your email address will not be published. Required fields are marked *