Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1737444
  • 博文数量: 347
  • 博客积分: 9328
  • 博客等级: 中将
  • 技术积分: 2680
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-29 23:45
文章分类

全部博文(347)

文章存档

2016年(1)

2013年(4)

2012年(207)

2011年(85)

2010年(50)

分类: C/C++

2010-10-22 19:11:48

1.要点

  • 在程序的入口处调用CreateXXX函数创建一个命名对象(如Mutex,Event等均可),然后调用GetLastError()函数检查返回值,看此对象是否已存在,如果已存在则说明已存在此程序的实例
  • 在程序的出口点调用CloseHandle()关闭在入口处创建的命名对象

2.实现代码

  1: //At the entry point, such aa the beginning of WinMain in Win32 app,
  2: //or CWinApp::InitInstance() in MFC app
  3: LPCTSTR instanceName = 
  4:      _T("AD83912A-43F2-4BF6-B0CF-02BF6589FFF7");  //Generated with GuidGen tool
  5: HANDLE h = ::CreateMutex(NULL,FALSE,instanceName);
  6: DWORD error = GetLastError();
  7: if (error == ERROR_ALREADY_EXISTS)
  8: {
  9: 	::CloseHandle(h);
 10: 	return FALSE;  //Exist
 11: }
 12: 
 13: //.......
 14: 
 15: //At the exist point, close the named object and then exist
 16: ::CloseHandle(h);
 17: return FALSE; //Exist
 18: 
阅读(899) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~