c++防止客户端多开巧妙代码
2016-03-01 16:01
676 查看
在读OBS源码时看到一个比较有意思的关于防止用户多开程序的写法,简单有效,记录下
这里他CreateMutex创建一个互斥体,当第一次执行程序时创建成功,第二次执行程序时则CreateMutex会失败,此时设置程序焦点到已经开启的程序。
//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会失败,此时设置程序焦点到已经开启的程序。
相关文章推荐
- C++ 虚函数表解析
- opencv error assertion failed,imread读到的总是空数据,Microsoft C++ 异常: 内存位置 0x0043f888 处的 cv::Exception。
- C语言中的存储类型
- 【C++11新特性】 C++11智能指针之weak_ptr
- C++ primer 第五版 中文版 练习 10.33
- 0.2 简单搭建C语言环境
- Java调用C/C++编写的第三方dll动态链接库(zz)
- 字符串最后一个单词的长度 C语言版本
- utilities——比较与排序规则(C++)
- C语言 字符串处理技巧(sscanf、strstr等用法)
- C语言——位操作
- C语言发展简介
- 0.1欢迎来到C语言的世界(教程介绍)
- C++发展简介
- C++中的Vector的用法
- 图像验证码识别(八)——字符归一化
- C语言:华氏温度与摄氏温度对照表
- 图像验证码识别(七)——字符分割
- 将C语言编译成DLL并用C#进行调用以及关于从C#传输中文路径到C的DLL中打开文件的问题
- C++ 类中特殊成员变量(常量、静态、引用)的初始化方法