Windows下用互斥量来使程序单例运行

 1 /******
 2  *名称:singleApp
 3  *参数:无
 4  *功能:通过试图打开一个互斥量来判断一个程序是否被实例化过
 5  *****/
 6 bool QUtil::singleApp()
 7 {
 8     HANDLE sigleAppHandle=NULL;
 9     sigleAppHandle=OpenMutexA(MUTEX_ALL_ACCESS,FALSE,MUTEX_APP);
10     if(sigleAppHandle == NULL)
11     {
12         if(GetLastError()== ERROR_FILE_NOT_FOUND)
13         {
14             //程序没有运行,创建互斥变量
15             if(CreateMutexA(NULL,FALSE,MUTEX_APP)==NULL){
16                 cout<<GetLastError()<<endl;
17                 return false;
18             }
19             return true;
20         }
21     }
22     //程序已经运行
23     return false;
24 }

MUTEX_APP为一个字符串宏变量

posted @ 2012-06-25 15:01  会写代码的胡某某  阅读(128)  评论(0)    收藏  举报