VC/MFC保证系统只有一个实例在运

VC/MFC项目开发——保证系统只有一个实例在运行   

      在项目开发中,为了保证系统一致性或者安全性,经常要求系统在一个时刻在同一台机器上只能运行一个实例。可以通过以下方式实现(示例代码):
1)在InitInstance()函数中添加如下代码:
CString m_pszName(_T("OnlyOne"));
HANDLE m_hMutex = ::CreateMutex(NULL,TRUE,m_pszName);
if  (GetLastError() = = ERROR_ALREADY_EXISTS)

{
       CloseHandle(m_hMutex);     //注意关闭句柄
       AfxMessageBox(“您已经运行了本软件!谢谢使用 ”);  //已经运行了程序
       return FALSE;
}


其中:
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,                                      
BOOL bInitialOwner,  // flag for initial ownership
LPCTSTR lpName       // pointer to mutex-object name
);

LPSECURITY_ATTRIBUTES :标志函数返回值HANDLE是否可以被子进程继承,为NULL标志不能被继承;
bInitialOwner:标志互斥量的所有者,为TRUE标志调用者创建了互斥量,并且调用线程拥有该互斥量,否则调用线程不                         拥有该互斥量;
lpName  :互斥量名称。

2)关闭互斥体

响应ExitInstance()函数,并添加如下代码:
CloseHandle(m_hMutex);


你可能感兴趣的:(VC/MFC保证系统只有一个实例在运)