程序防止多开的几种常见方法
windows系统下,程序防止多开的几种常见方法:
1)使用FindWindow API函数。
通过查找窗口标题(或/和类名)来判断程序是否正在运行。如果找到了,表明程序正在运行,这时可退出程序,达到不重复运行的效果;反之表明程序是第一次运行。
这种方法不适用于以下情况,程序的标题是动态变化的、系统中运行了相同标题(或/和类名)的程序
2)Mutex/Event/Semaphore
通过互斥对象/信号量/事件等线程同步对象来确定程序是否已经运行。最常用的函数如:CreateMutexA(注意:QQ堂、QQ游戏大厅就是采用这样方法来限制程序多开的)
3)内存映射文件(File Mapping)
通过把程序实例信息放到跨进程的内存映射文件中,也可以控制程序多开。
4)DLL全局共享区
DLL全局共享区在映射到各个进程的地址空间时仅被初始化一次,且是在第一次被windows加载时,所以利用该区数据就能对程序进行多开限制。
5)全局Atom
将某个特定字符串通过GlobalAddAtom加入全局原子表(Global Atom Table),程序运行时检查该串是否存在来限制程序多开。(该Atom不会自动释放,程序退出前必须调用GlobalDeleteAtom来释放Atom)
6)检查窗口属性
将某些数据通过SetProp加入到指定窗口的property list,程序运行时枚举窗口并检查这些数据是否存在来限制多开。
以上只列举了最常见的几种方法,具体应用中可以有n种选择,或综合运用多种方法来限制。
转载于:https://www.cnblogs.com/cnmyp/archive/2012/02/20/2359401.html
程序防止多开的几种常见方法相关推荐
- 微信小程序运营推广的几种常见方法
微信小程序运营推广的几种常见方法 主流推广方式:公众号引流.截流,由于涉及一些不合常规的内容,本文只说常规操作,剩下的自己领悟,或者可以下方扫码联系我~ 首先小程序的名字至关重要,一个好的名字可以带来 ...
- 个人建站赚钱的5种常见方法
建站赚钱是很多个人站长做站时避不开的问题,现在通过网站赚钱的人越来越多,但个人站长要模仿百度.淘宝那样赚钱模式却并不现实,而是要有适合个人的方法或途径,那个人建站赚钱方法有哪些呢?主机侦探小编这里汇总 ...
- 为何大量网站不能抓取?爬虫突破封禁的6种常见方法
为何大量网站不能抓取?爬虫突破封禁的6种常见方法 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用"网络数据采集",有时会把网络数据采 ...
- Mac软件打不开的几种解决方法
Mac软件打不开的几种解决方法 一.提示"XXX已损坏,打不开,您应该将它移至废纸篓"的解决方法: 1. 打开终端,输入命令:"sudo spctl --master-d ...
- 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)
NSArray中存放的是NSDictionary,可以使用策略的方法对NSDictionary进行定制,增加比较的方法.然后调用NSArray的sortUsingSelector方法对数组进行排序,这 ...
- 计算机演示题打不开,win7系统电脑上的ppt打不开怎么修复|ppt打不开的四种修复方法...
ppt是一款演示文稿软件,用户可以在投影仪或者计算机上进行演示,办公或者生活中都有使用到.一些win7系统用户说电脑上的ppt打不开,好不容易制作出一个完美的PPT文档,辛辛苦苦的成功,出现打不开现象 ...
- 用Python解析XML的几种常见方法的介绍
这篇文章主要介绍了用Python解析XML的几种常见方法,包括快速的使用ElementTree模块等方法的实例介绍,需要的朋友可以参考下 一.简介 XML(eXtensible Markup Lang ...
- 【python】python列表去重的5种常见方法实例
Python编程过程中经常会遇到列表去重的问题,下面这篇文章主要给大家介绍了python列表去重的5种常见方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下 前言 列表去重在python实际运 ...
- 测试用例设计的几种常见方法,测试用例的几大要素
一,测试用例设计的几种常见方法 1.等价类划分 2.边界值分析 3.错误推测法 4.判定表法 5.正交实验法 6.因果图法 7.状态迁移 8.流程分析法(场景设计法) 举例说明,链接中有更为详细的举例 ...
- 记录一次Redis未授权getshell几种常见方法
记录一次Redis未授权getshell几种常见方法 一.redis未授权访问简介 Redis默认情况下,端口是6379,默认配置无密码 ./redis-server 使用默认配置 ./redis-s ...
最新文章
- exe解包和重新打包_pyinstaller打包的exe太大?你需要嵌入式python玄学 前提篇
- Java菜鸟教程math类_Java Number Math 类
- CentOS-6.0下安装配置Cacti
- MPEG4 (ISO/IEC 14496) 文档内容 简介
- telnet后为啥打开的时防火墙_《和平精英》停服时玩家打开国际服,淘汰1个敌人后收到1个提示!...
- 优化网站设计:减少DOM元素的数量
- 百位云计算专家齐聚湖畔大学,阿里云MVP全球闭门会聚焦数字化转型
- 禁ping也能ping的工具: tcping
- Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure...........
- 用简单Mask分类实现语义分割、实例分割“大一统”!FacebookUIUC开源MaskFormer
- xUtils3 联网模块
- python访问oracle时的问题总结
- AXURE-手把手教你做汉化
- js 对中文字符的 解码 与 编码
- Linux原生日志系统Rsyslog详解
- 代码重构(一)原理和规范
- ISCC,Misc:降维打击
- C++基础之 函数(function)
- 挖掘肖特基二极管保护电路的小窍门
- oracle对某两列求和再求和_分手再狠也不怕,3步让他主动求和