MFC 置窗口最前端

让程序单例程运行

皮贝贝 posted @ 2009年7月25日 14:58 in MFC with tags MFC , 2568 阅读

1.  使用Mutex内核对象

 

 

bool IsHaveAnotherProcess()
{
        HANDLE hMutex = CreateMutex( NULL, FALSE, "ProcessA" );
        if ( GetLastError() == ERROR_ALREADY_EXISTS )
        {
                CloseHandle( hMutex );
                AfxMessageBox( "程序已经启动" );
                return false;
        }
        return true;
}

 

 

         先用 CreateMutex 来创建一个具名互斥量,若是创建成功返回一个互斥量对象的句柄; 反之,函数返回这个已经存在的互斥量的句柄,并 GetLastError() 返回错误代码 ERROR_ALREADY_EXISTS。
   

事实上,这是利用了windows内核对象的知识。命名的内核对象属于全局可访问的,唯一的,当创建一个命名的内核对象时 ( Create* ),系统会先检查内核里是否有这个对象,有则返回这个对象的句柄,无则创建一个。

 

 

 

 

  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter