在windows环境下,我们经常要确保程序只有唯一的实例。其实,我们只要在程序的初始化阶段判断就可以了。下面,我们就以单文档进行演示。
第一步:默认创建一个单文档项目。例如项目名为:test
第二步:在test.cpp添加一个判断函数。如:BOOL AlreadyRunning();
代码为:
BOOL IsAlreadyRunning()
{
BOOL bRet = FALSE;
HANDLE hMutex = ::CreateMutex(NULL,TRUE,AfxGetAppName());
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
bRet = TRUE;
}
if (hMutex)
{
::ReleaseMutex(hMutex);
}
return bRet;
}
第三步:在项目的InitInstance()开始处添加判断函数。如果程序已经运行,返回FALSE。
完事了。
2011-02-27