功能

CreateMutex() 用于有独占要求的程序 (在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行)。

比如运行金山词霸时,一次只能运行一个实例,当运行第二个实例时,实际上是激活第一个实例,将其带到最顶层。

原型

 HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,
BOOL bInitialOwner,
LPCTSTR lpName
);

参数

lpMutexAttributes:必须为NULL

bInitialOwner:如果为TRUE,调用互斥对象的线程获得互斥对象的所有权

         如果为FALSE,则不拥有

lpName:如果lpName跟一个已存在的事件、信号、文件映射对象匹配,即命名的互斥对象已存在,则CreateMutex函数失败,GetLastError()返回ERROR_INVALID_HANDLE。

注解

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

代码

 1 BOOL CBBBApp::SetMutex()
2 {
3 BOOL bFound = FALSE;
4
5 HANDLE hMutexOneInstance = ::CreateMutex(NULL, TRUE, _T("MutexBBB"));
6
7 if (::GetLastError() == ERROR_ALREADY_EXISTS)
8 {
9 TRACE(_T("Instance对象已存在"));
10
11 bFound = TRUE;
12 CloseHandle(hMutexOneInstance);
13 hMutexOneInstance = NULL;
14 }
15
16 if (hMutexOneInstance)
17 {
18 ::ReleaseMutex(hMutexOneInstance);
19 }
20
21 if (bFound)
22 {
23 return FALSE;
24 }
25
26 return TRUE;
27 }

最新文章

  1. java学习笔记之数组
  2. vbs下载者
  3. Android 布局之TableLayout
  4. jsp页面揣出现Invalid action class configuration that references an unknown class解决方案
  5. NAT原理与NAT穿越
  6. spark新能优化之多次使用RDD的持久化或checkPoint
  7. Indian Scientists Design Device to Collect Solar Energy 印度科学家设计太阳能收集设备
  8. C#中listbox中选中多项,并删除
  9. JavaEE5种常见的设计模式
  10. Qt 之 QtScript
  11. FindChildControl与FindComponent
  12. MFC单选按钮
  13. PE格式详解讲解1
  14. Android开发之漫漫长途 XI——从I到X的小结
  15. Electron应用使用electron-builder配合electron-updater实现自动更新(windows + mac)
  16. 『调错』OGG Error opening module ggjava_ue.dll
  17. Java读取Excel并与SqlServer库中的数据比较
  18. NC 自定义项参照设置为查询条件
  19. BZOJ 1143: [CTSC2008]祭祀river(最大独立集)
  20. Hadoop — HDFS的概念、原理及基本操作

热门文章

  1. jQuery中两种阻止事件冒泡的区别
  2. JQ图片跟着鼠标走
  3. cisco asa5520 IOS故障恢复
  4. (转+原)android获取系统时间
  5. web.xml中<load-on-start>n</load-on-satrt>作用
  6. zz[C++]合理的设计和使用消息队列
  7. Git commit template 模板设定
  8. 【CKEditor ASP.NET】解决360安全浏览器极速模式下不显示
  9. MVC 分页获取数据 及点选按钮
  10. U盘开发之安全U盘