以对话框程序Demo为例:1、在CDemoApp类中添加成员变量: HANDLE m_hMutex;
2、重载CWinApp::InitInstance 和 CWinApp::ExitInstance,代码如下:
BOOL CDemoApp::InitInstance()
{
//创建互斥量
m_hMutex = ::CreateMutexW(NULL,FALSE,_T("Demo"));
//判断互斥量是否存在
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox(_T("应用程序已经运行!"));
return false;
}
else
{
AfxMessageBox(_T("应用程序第一次运行"));
}
//.....
return FALSE ;
}
int CDemoApp::ExitInstance()
{
// TODO: 在此添加专用代码和/或调用基类
if(m_hMutex != NULL)
{
CloseHandle(m_hMutex); //关闭句柄
}
return CWinApp::ExitInstance();
}