您的位置:首页 > 编程语言 > C语言/C++

c++防止客户端多开巧妙代码

2016-03-01 16:01 676 查看
在读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会失败,此时设置程序焦点到已经开启的程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: