c++防止客户端多开巧妙代码
2016-03-01 16:01 冷水菜 阅读(1233) 评论(0) 编辑 收藏 举报在读OBS源码时看到一个比较有意思的关于防止用户多开程序的写法,简单有效,记录下
//make sure only one instance of the application can be open at a time #define OBS_WINDOW_CLASS TEXT("OBSWindowClass") HANDLE hOBSMutex = CreateMutex(NULL, TRUE, TEXT("OBSMutex")); if(GetLastError() == ERROR_ALREADY_EXISTS)// 如果已有互斥量存在 这里GetLastError则是CreateMutex的Error { hwndMain = FindWindow(OBS_WINDOW_CLASS, NULL);//获取该窗体句柄 if(hwndMain) SetForegroundWindow(hwndMain);//设置焦点到程序窗口 CloseHandle(hOBSMutex);//互斥量存在释放句柄并复位互斥量 return 0; }
这里他CreateMutex创建一个互斥体,当第一次执行程序时创建成功,第二次执行程序时则CreateMutex会失败,此时设置程序焦点到已经开启的程序。 end