Chinaunix首页 | 论坛 | 博客
  • 博客访问: 408111
  • 博文数量: 51
  • 博客积分: 2030
  • 博客等级: 大尉
  • 技术积分: 1109
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-15 08:11
文章分类

全部博文(51)

文章存档

2022年(1)

2016年(2)

2015年(1)

2014年(2)

2013年(4)

2011年(9)

2010年(2)

2009年(5)

2008年(14)

2007年(11)

我的朋友

分类: Windows平台

2016-03-15 16:56:48

1. 在应用程序类添加一个句柄变量:
private:
    HANDLE m_hMutex;

2.在应用程序类的InitInstance 函数里添加如下代码:
    // 创建一个具名的互斥锁

    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);
    }

阅读(1121) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~