全部博文(51)
分类: Windows平台
2016-03-15 16:56:48
m_hMutex = CreateMutex(NULL, TRUE, _T("MutilThread"));
if ((m_hMutex != NULL) && (GetLastError() == ERROR_ALREADY_EXISTS))
{
ReleaseMutex(m_hMutex);
//::AfxMessageBox(_T("应用程序已经存在"));
// 激活已打开的应用程序
HWND hWnd = FindWindowEx(NULL, NULL, NULL, _T("MutilThread4"));
if (hWnd != NULL)
{
// 如果窗口已最小化,则恢复窗口的显示
if (::IsIconic(hWnd))
{
::ShowWindow(hWnd,SW_RESTORE);
}
// 把窗口调到前台显示
::SetForegroundWindow(hWnd);
}
// 返回false使应用程序退出
return FALSE;
}
3.在应用程序的最后要释放互斥锁和关闭互斥锁的handle
if (m_hMutex != NULL)
{
ReleaseMutex(m_hMutex);
CloseHandle(m_hMutex);
}