c++防止客户端多开巧妙代码
2024-10-16 21:46:12
在读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 ;
}
这里他CreateMutex创建一个互斥体,当第一次执行程序时创建成功,第二次执行程序时则CreateMutex会失败,此时设置程序焦点到已经开启的程序。 end
最新文章
- MySQL数据迁移到MSSQL-以小米数据库为例-测试828W最快可达到2分11秒
- 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)
- Freemarker中通过request获得contextPath
- iOS 开发 – 均衡代码职责
- java+ mysql 给所有的表添加假数据
- PHP json的插入和解析在数据库中的操作
- Android基于cordova3.3插件开发
- java 导出
- changXY
- ArcGis Python脚本——根据接图表批量裁切分幅影像
- Flask+Nginx+Supervisor+Gunicorn+HTTPS部署教程(CentOs)
- Django项目settings配置redis连接
- linux下后台启动springboot项目
- prometheus热重启
- java实体转json忽略属性
- Scala类的构造器与访问器
- Python complex() 函数
- Python基础之公共方法
- 使用存储过程将Oracle数据批量导出为多个csv文件
- .NET Core get started on Ubuntu 14.04
热门文章
- Devexpress使用经验1
- CodeForces 444C 分块
- oracle存储过程截取字符串
- (iOS) __block和__weak认识
- 第八章 springboot + mybatis + 多数据源
- java-集合4
- 自定义RadioButton样式
- 【BZOJ】3835: [Poi2014]Supercomputer
- Excel转Json,Json转CSharp
- 在MVC架构中使用CodeSmith生成NHibernate映射对象和实体类