Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18672051
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-05-27 20:40:31

有时候为了避免不必要的错误,应防止同一应用程序被打开两个实例

以下一个函数可以达到此项目的,挺有用的!

BOOL C××App::AlreadyRunning()
{
    BOOL bFound = FALSE;

    // Try to create a mutex with the app's name
    HANDLE hMutexOneInstance = ::CreateMutex(NULL,TRUE,_T(AfxGetAppName()));

    // Already there...means that we are already running an instance
    if(::GetLastError() == ERROR_ALREADY_EXISTS)
        bFound = TRUE;

    // Release the mutex
    if(hMutexOneInstance)
        ::ReleaseMutex(hMutexOneInstance);

    return(bFound);
}

只要在
BOOL C**App::InitInstance()
{
    // Is it already running?
    if(AlreadyRunning())
    {
        // Yep...get out now
        AfxMessageBox(IDS_ALREADY_RUNNING,MB_ICONWARNING);
        return(FALSE);
    }
    。。。。。

}

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