您的位置:首页 > 其它

MFC只运行一个实例

2016-01-17 15:06 399 查看
本文参考

http://blog.163.com/ymkigeg@yeah/blog/static/82395301201310211554172/?latestBlog
http://www.cnblogs.com/likebeta/archive/2011/07/01/2095590.html

1、在InitInstance的开始

m_hMutex = ::CreateMutexW(NULL, FALSE, LPCWSTR("STM32_Upgrade"));//这是成员变量
//判断互斥量是否存在
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
//AfxMessageBox(_T("应用程序已经运行!"));
//查找这个窗口,注意,这个变量窗口运行起来的标题!
//修改对话框标题之后也要修改这个才会激活前一个实例
HWND hWnd = FindWindow(NULL, TEXT("Firmware Update"));
if (IsWindow(hWnd))
{
//::MessageBox(NULL, TEXT("已经有一个实例在运行了。"), TEXT("注意"), MB_OK);
::ShowWindow(hWnd, SW_NORMAL);     // 显示
::SetForegroundWindow(hWnd);       // 激活
return FALSE;
}
return FALSE;
}


 

2、在ExitInstance中

if (m_hMutex != NULL)
{
CloseHandle(m_hMutex); //关闭互斥量句柄
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: