精易论坛

标题: 防止程序多开,API实现 CreateMutexA 进程互斥体 [打印本页]

作者: anysot    时间: 2017-4-7 10:37
标题: 防止程序多开,API实现 CreateMutexA 进程互斥体
本帖最后由 宇智波·佐助 于 2017-4-9 09:30 编辑

废话不多说
防止双开方法很多,笨方法是枚举进程列表,然后判断路径是否相同,这个方法如果复制一份源文件就能双开了,没啥用处。

我这里是用Windows api 的OpenMutex和CreatMutex来判断、创建进程互斥体 从而达到防止双开的目的。互斥体的标识 为了达到唯一 建议最好自己生成guid来作为程序的标识,防止和其他程序冲突,每个程序必须唯一标识。
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
如果 (进程互斥 (“3A6F7D6C-32C4-4840-A075-7E665499EBF6”))
' 不存互斥体 创建进程

' 存在互斥体 销毁进程
_启动窗口.销毁 ()

子程序名返回值类型公开备 注
进程互斥逻辑型 创建进程互斥体,防止多开
参数名类 型参考可空数组备 注
互斥体标识文本型唯一标识 最好生成Guid
变量名类 型静态数组备 注
打开结果整数型 
lpMutexAttributesSECURITY_ATTRIBUTES 
返回结果逻辑型假 表示互斥体存在 真 表示不存在互斥体且成功创建互斥体
' 返回结果
返回结果 = 假
' 打开 互斥体 查询是否已经存在互斥体
打开结果 = OpenMutexA (2031617, 真, 互斥体标识)
如果真 (打开结果 = 0)
' 不存在 启动程序 创建 互斥
打开结果 = CreateMutex (lpMutexAttributes, 真, 互斥体标识)
如果真 (打开结果 ≠ 0)
返回结果 = 真

返回 (返回结果)

DLL:
  
DLL命令名返回值类型公开备 注
OpenMutexA整数型 
DLL库文件名:
Kernel32
在DLL库中对应命令名:
OpenMutexA
参数名类 型传址数组备 注
desiredAccess整数型
bInherit逻辑型
lpName文本型
DLL命令名返回值类型公开备 注
CreateMutex整数型 
DLL库文件名:
Kernel32
在DLL库中对应命令名:
CreateMutexA
参数名类 型传址数组备 注
lpMutexAttributesSECURITY_ATTRIBUTES
initialOwner逻辑型
uniqueName文本型



数据类型:
  
数据类型名公开备 注
SECURITY_ATTRIBUTES 安全性结构;
成员名类 型传址数组备 注
nLength整数型  
lpSecurityDescriptor整数型  
bInheritHandle整数型  



范例:可以自己下载
进程互斥体_防止双开.zip (1.84 KB, 下载次数: 438)

作者: ck66    时间: 2017-4-7 10:58
给力的方法 感谢分享
作者: 绝版Ren物    时间: 2017-4-7 11:05
多谢分享,下载看看学习一下
作者: okfyx21    时间: 2017-4-7 11:55
多谢分享,给力的方法
作者: 指尖流淌    时间: 2017-4-7 13:51
多谢分享,给力的方法
作者: dawei2099    时间: 2017-4-7 14:44
下载学习一下
作者: y2j423633    时间: 2017-4-7 16:54
收藏了,感谢分享
作者: 2446789312    时间: 2017-4-7 19:31
还是不明白
作者: qcljj    时间: 2017-4-7 23:02
收藏了,感谢分享
作者: h2995527    时间: 2017-4-7 23:48
刚好需要,热乎着
作者: kyo9766    时间: 2017-4-8 09:20
非常好的 方法
作者: 网上邻居007    时间: 2017-4-8 13:54
谢谢啊我喜欢
作者: 易简约    时间: 2017-4-8 23:59
多谢分享,给力的方法多谢分享,给力的方法
作者: xiaoyuan2017    时间: 2017-4-9 10:36
讲的好深奥   还是不懂
作者: 阿亦x    时间: 2017-4-9 11:35
支持666666666666666666666666666
作者: jhai    时间: 2017-4-11 19:27
能取回已开程序的句柄才好
作者: 393763    时间: 2017-4-17 10:11
顶顶,学习一下
作者: JunnyHAHA    时间: 2017-4-24 22:15
下载了~懒得复制
作者: cpchenpan    时间: 2017-4-26 17:13
好东西 ,收藏了
作者: eeoooo    时间: 2017-6-2 13:38
不错的源码

QQ截图20170602132558.png (16.4 KB, 下载次数: 0)

QQ截图20170602132558.png

QQ截图20170602133805.png (16.04 KB, 下载次数: 0)

QQ截图20170602133805.png

作者: woolpost    时间: 2017-8-18 01:23
支持支持支持
作者: a2825966    时间: 2018-9-15 21:26
看着挺好的    喜欢  喵
作者: virus7soft    时间: 2018-10-11 03:46
API还是好用
作者: systemxzh    时间: 2019-4-4 18:38
顶顶,学习一下
作者: 黄苏    时间: 2019-6-1 12:44
感谢楼主分享!谢谢!!!
作者: jiazhida    时间: 2019-7-22 10:59
学习了
作者: qazwsxsw    时间: 2019-8-28 12:11
非常感谢楼主,很好用
作者: gehuasas    时间: 2020-1-23 11:24
谢谢整需要这个
作者: coolfire1983    时间: 2020-3-21 10:58
感谢楼主分享啊!
作者: 手游达人    时间: 2020-12-31 10:18
用了下,非常不错的!
作者: 梦雨小小生    时间: 2021-3-28 16:32
阿萨德阿萨德阿萨德
作者: 黑羽啊    时间: 2021-6-16 23:50
666666,谢谢分享,点赞
作者: fanjim    时间: 2021-10-19 11:31
这个需要赞一下
作者: fanjim    时间: 2021-10-19 11:31
不知道成功了没
作者: 梦想有多远    时间: 2022-3-26 14:26
过来学习一下
作者: ym36762674    时间: 2022-5-1 23:47
币永远不够用啊
作者: ym36762674    时间: 2022-5-1 23:47
这个17年的不知道能不能用
作者: glr9107    时间: 2023-4-9 02:55
找了很久,感谢分享

作者: gyqgxj    时间: 2023-6-1 17:09
看看学习学习!!!




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4