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

程序防止多开的几种常见方法相关推荐

  1. 微信小程序运营推广的几种常见方法

    微信小程序运营推广的几种常见方法 主流推广方式:公众号引流.截流,由于涉及一些不合常规的内容,本文只说常规操作,剩下的自己领悟,或者可以下方扫码联系我~ 首先小程序的名字至关重要,一个好的名字可以带来 ...

  2. 个人建站赚钱的5种常见方法

    建站赚钱是很多个人站长做站时避不开的问题,现在通过网站赚钱的人越来越多,但个人站长要模仿百度.淘宝那样赚钱模式却并不现实,而是要有适合个人的方法或途径,那个人建站赚钱方法有哪些呢?主机侦探小编这里汇总 ...

  3. 为何大量网站不能抓取?爬虫突破封禁的6种常见方法

    为何大量网站不能抓取?爬虫突破封禁的6种常见方法 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用"网络数据采集",有时会把网络数据采 ...

  4. Mac软件打不开的几种解决方法

    Mac软件打不开的几种解决方法 一.提示"XXX已损坏,打不开,您应该将它移至废纸篓"的解决方法: 1. 打开终端,输入命令:"sudo spctl --master-d ...

  5. 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)

    NSArray中存放的是NSDictionary,可以使用策略的方法对NSDictionary进行定制,增加比较的方法.然后调用NSArray的sortUsingSelector方法对数组进行排序,这 ...

  6. 计算机演示题打不开,win7系统电脑上的ppt打不开怎么修复|ppt打不开的四种修复方法...

    ppt是一款演示文稿软件,用户可以在投影仪或者计算机上进行演示,办公或者生活中都有使用到.一些win7系统用户说电脑上的ppt打不开,好不容易制作出一个完美的PPT文档,辛辛苦苦的成功,出现打不开现象 ...

  7. 用Python解析XML的几种常见方法的介绍

    这篇文章主要介绍了用Python解析XML的几种常见方法,包括快速的使用ElementTree模块等方法的实例介绍,需要的朋友可以参考下 一.简介 XML(eXtensible Markup Lang ...

  8. 【python】python列表去重的5种常见方法实例

    Python编程过程中经常会遇到列表去重的问题,下面这篇文章主要给大家介绍了python列表去重的5种常见方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下 前言 列表去重在python实际运 ...

  9. 测试用例设计的几种常见方法,测试用例的几大要素

    一,测试用例设计的几种常见方法 1.等价类划分 2.边界值分析 3.错误推测法 4.判定表法 5.正交实验法 6.因果图法 7.状态迁移 8.流程分析法(场景设计法) 举例说明,链接中有更为详细的举例 ...

  10. 记录一次Redis未授权getshell几种常见方法

    记录一次Redis未授权getshell几种常见方法 一.redis未授权访问简介 Redis默认情况下,端口是6379,默认配置无密码 ./redis-server 使用默认配置 ./redis-s ...

最新文章

  1. exe解包和重新打包_pyinstaller打包的exe太大?你需要嵌入式python玄学 前提篇
  2. Java菜鸟教程math类_Java Number Math 类
  3. CentOS-6.0下安装配置Cacti
  4. MPEG4 (ISO/IEC 14496) 文档内容 简介
  5. telnet后为啥打开的时防火墙_《和平精英》停服时玩家打开国际服,淘汰1个敌人后收到1个提示!...
  6. 优化网站设计:减少DOM元素的数量
  7. 百位云计算专家齐聚湖畔大学,阿里云MVP全球闭门会聚焦数字化转型
  8. 禁ping也能ping的工具: tcping
  9. Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure...........
  10. 用简单Mask分类实现语义分割、实例分割“大一统”!FacebookUIUC开源MaskFormer
  11. xUtils3 联网模块
  12. python访问oracle时的问题总结
  13. AXURE-手把手教你做汉化
  14. js 对中文字符的 解码 与 编码
  15. Linux原生日志系统Rsyslog详解
  16. 代码重构(一)原理和规范
  17. ISCC,Misc:降维打击
  18. C++基础之 函数(function)
  19. 挖掘肖特基二极管保护电路的小窍门
  20. oracle对某两列求和再求和_分手再狠也不怕,3步让他主动求和

热门文章

  1. it技术交流平台_IT协会向你招手了,不了解了解?
  2. 力扣-72 编辑距离
  3. Android 《第1行代码》-所有知识点架构
  4. Android 去除头部标题
  5. 好文章推荐 数据库mysql
  6. java Web应用配置log4j日志记录
  7. 游戏开发筑基之判断回文数及static(C语言)
  8. Security+ 学习笔记21 认证
  9. NetDevOps常用数据库安装与基本操作--SQL数据库
  10. MPLS连通性测试原理