如何实现Windows上只启动程序一次
问题描述:
我们的客户希望客户端程序在客户端上24小时在线,如果因为特殊的原因而崩溃或者退出,应该能自动的重启程序。
我们所想到的一个解决办法就是使用一个监控进程,这个进程一开机的时候就会自动尝试着启动程序;并且,每隔一段时间就检查程序是否还启动着,如果不是的话,则重新启动程序。
问题分析:
1、首先,是如何在Windows上启动一个程序,并定时的检查程序的运行状态,我们可以用如下的代码来做这些事情:
#include "LimitSingleInstance.H"// The one and only CLimitSingleInstance object.CLimitSingleInstance g_SingleInstanceObj(TEXT("Global\\{9DA0BEED-7248-450a-B27C-C0409BDC377D}"));int main(int argc, char* argv[]){ if (g_SingleInstanceObj.IsAnotherInstanceRunning()) return 0;//Rest of code.}编程环境:
Qt 4.7 + Visual Studio 2008
参考资料:
1、 http://support.microsoft.com/kb/243953
2、 http://stackoverflow.com/questions/1591342/how-to-determine-if-a-windows-process-is-running
3、 http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx
4、 如何创建进程:http://msdn.microsoft.com/en-us/library/ms682512%28VS.85%29.aspx