CreateMutex

作用

找出当前系统是否已经存在指定进程的实例。如果没有则创建一个互斥体。CreateMutex()函数可用来创建一个有名或无名的互斥量对象,其函数原型为

VC声明

HANDLE CreateMutex(   LPSECURITY_ATTRIBUTESlpMutexAttributes, // 指向安全属性的指针   BOOLbInitialOwner, // 初始化互斥对象的所有者   LPCTSTRlpName // 指向互斥对象名的指针   );

编辑本段说明

创建一个互斥体(MUTEX)   

返回值   Long,

如执行成功,就返回互斥体对象的句柄;零表示出错。会设置GetLastError。即使返回的是一个有效句柄,但倘若指定的名字已经存在,GetLastError也会设为ERROR_ALREADY_EXISTS   参数表   参数 类型及说明   lpMutexAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值),表示使用不允许继承的默认描述符   bInitialOwner Long,如创建进程希望立即拥有互斥体,则设为TRUE。一个互斥体同时只能由一个线程拥有   lpName String,指定互斥体对象的名字。用vbNullString创建一个未命名的互斥体对象。如已经存在拥有这个名字的一个事件,则打开现有的已命名互斥体。这个名字可能不与现有的事件、信号机、可等待计时器或文件映射相符

编辑本段注解

一旦不再需要,注意必须用CloseHandle函数将互斥体句柄关闭。从属于它的所有句柄都被关闭后,就会删除对象   进程中止前,一定要释放互斥体,如不慎未采取这个措施,就会将这个互斥体标记为废弃,并自动释放所有权。共享这个互斥体的其他应用程序也许仍然能够用它,但会接收到一个废弃状态信息,指出上一个所有进程未能正常关闭。这种状况是否会造成影响取决于涉及到的具体应用程序

编辑本段使用例子:

(1)、 h_mutex1=CreateMutex(NULL,FALSE,"mutex_for_readcount");//创建一个互斥体   (2)、HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");// 检查错误代码   if (GetLastError() == ERROR_ALREADY_EXISTS)   {   // 如果已有互斥量存在则释放句柄并复位互斥量   CloseHandle(m_hMutex);   m_hMutex = NULL;   // 程序退出   return FALSE;   };   //上面这段代码演示了有名互斥量在进程互斥中的用法。代码的核心是CreateMutex()对有名互斥量的创建。   CreateMutex() 用于有独占要求的程序 (在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行)。

CreateMutex创建互斥体可以用于只运行进程的一个实例相关推荐

  1. 使用互斥体使程序只运行一个

    何为互斥体 引用了百科的话 互斥体实现了"互相排斥"(mutual exclusion)同步的简单形式(所以名为互斥体(mutex)).互斥体禁止多个线程同时进入受保护的代码&qu ...

  2. CreateMutex创建互斥内核对象

    http://blog.sina.com.cn/s/blog_149e9d2ec0102wyr0.html 在编程中我们常使用程序创建一个互斥的内核对象,目的就是为了让这个程序只能运行一次.我们都会有 ...

  3. CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象

    CreateMutex CreateMutex作用是找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. 互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权 互斥对象的 ...

  4. Delphi 10.4利用CreateMutex函数创建互斥对象实例防止程序中多次执行该对象

    windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子. 需要用到的函数CreateMut ...

  5. 转:让程序只运行一个实例的四种方法

    先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...

  6. 利用互斥体阻断想哭蠕虫,实现联网升级

    本文讲的是利用互斥体阻断想哭蠕虫,实现联网升级,WanaCry想哭蠕虫肆虐,在全球范围内爆发.集团拥有数量巨大的终端用户,在经历断网升级之痛后的总结分析过程中,海航云安全团队发现了利用病毒互斥体实现蠕 ...

  7. Windows事件等待学习笔记(四)—— 事件信号量互斥体

    Windows事件等待学习笔记(四)-- 事件&信号量&互斥体 要点回顾 事件 实验:验证SignalState 第一步:编译并运行以下代码 第二步:观察结果 第三步:修改代码并执行 ...

  8. 互斥体CMutex的使用

    互斥体CMutex的使用 分类: 2.4 线程/图形学 2010-07-29 14:31 4512人阅读 评论(2) 收藏 举报 attributesmfcsecuritynullthreadwind ...

  9. 让Java程序只运行一个实例

    一个程序可以在内存里面存在多个运行实例,比如,你可以打开多个微软的Word程序.但是,有些时候我们需要控制程序运行的实例只有一个,也就是说,该程序同一时刻在内存里面运行的只有一个实例.这样当这个程序在 ...

最新文章

  1. 2021年软考考试时间公布
  2. jquery父元素和子元素点击事件传递问题_不可把父元素的事件传递给子元素_事件无限循环传递...
  3. STL 容器简介:C++ 容器:顺序性容器、关联式容器和容器适配器
  4. js整体缩小网页_SEO网页优化的原则是什么?
  5. 调整地面材质_家用浴室柜台面什么材质好?Pvc和大理石选哪个合适?
  6. Oracle数据库文件路径变更
  7. java jobkey_Java JobBuilder.newJob方法代码示例
  8. 八月份技术指标和个人指标
  9. 【Go语言核心手册14】结语参考文献
  10. 仓库货位卡标识牌_怎样正确使用仓库货位卡?来看看这三点
  11. php百度搜索接口api,百度开放平台API调用
  12. Windows事件ID大全
  13. lammps案例:石墨烯热导率模拟计算(EMD方法)
  14. 项目实战之电子商城数据库源码
  15. Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)
  16. 科学计算与数学建模-线性方程组求解的迭代法 思维导图
  17. win10系统怎么没有iis服务器,Win10企业版系统iis无法启动怎么解决?
  18. Java基础-OOP 面向对象编程
  19. 【学习图像处理】之实验二——灰度图像直方图规定化
  20. Openwrt/lede软路由设置为ap模式

热门文章

  1. ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator
  2. MaxCompute - ODPS重装上阵 第二弹 - 新的基本数据类型与内建函数
  3. C语言基础知识【数据类型】
  4. python 装饰器 二 (装饰带参数的函数)
  5. java.lang.NoSuchFieldError: deferredExpression
  6. 谈谈现在的状况,顺便给以后找工作的和我一样的毕业生说说
  7. 使用ASP.NET MVC 2编程时遇到的两个小问题
  8. Active Diretory 全攻略(八)--组策略(2)
  9. 解决SqlTransaction用尽的问题
  10. 关键基础设施是否会成为DDoS攻击的新目标?答案是不大会