用CMutex类实现程序互斥运行
2016-09-06 19:36
183 查看
在软件的开发过程中,有时需要控制一个程序不能同时有多个实例运行,也就是多个进程间互斥运行。我们在Visual C++ 6.0中利用CMutex类实现了多个进程间互斥运行。 |
在Visual C++ 6.0中我们用默认方式生成基于对话框的名为“test”的应用程序,在test.cpp文件开头加上以下一行代码 |
#include <afxmt.h> |
在程序的初始化前,生成一个全局的CMutex对象。 |
//test 是这个同步对象的名字。不同进程之间使用同一个同步对象,要起相同的名字。 |
CMutex mutex(true,"test"); |
在程序的初始化阶段,在CwinApp派生类的InitInstance函数的开始处,添加以下代码: |
BOOL CTestApp::InitInstance(){ |
CSingleLock singleLock(&mutex); //生成一个同步访问对象 |
singleLock.Lock(0); // 试图获取(锁住)共享资源 |
if(!sing.IsLocked()){ //共享资源被其他对象使用,锁定资源未成功 |
AfxMessageBox("test 程序已经运行,程序将退出"); |
exit(0); // 程序退出运行 |
} |
…… |
…… |
…… |
…… |
…… |
…… |
…… |
…… |
} |
以上的程序在Win2000/VC 6.0中已调试通过。以上的程序也可控制不同程序之间不能同时运行,不同程序的CMutex对象名字相同即可。 |
相关文章推荐
- 互斥对象实现 程序单个实例运行
- 实现程序互斥运行的几种方法
- c#实现程序的互斥运行
- c#实现程序的互斥运行
- 实现程序互斥运行的几种方法
- ASP.NET实现程序的互斥运行
- 实现程序的互斥运行
- 实现程序互斥运行的几种方法
- 各种语言Mutex(互斥)实现程序单实例运行
- 如何实现程序互斥运行
- VC++中实现程序互斥运行
- 实现程序互斥运行的几种方法
- 如何实现程序互斥运行
- 改注册表,在一定时间内只能运行指定程序,知道用组策略管理器,可以实现,不过我想用编程的方法。
- VC实现程序的自动运行
- 在VC中实现一次执行一个进程,如果同时打开两个,则报该程序已经运行
- c#实现程序开机自动运行
- 程序终于实现跨机器运行——记VC++2005程序开发的一个常见问题
- 实现同时只允许运行一个程序实例
- [导入]在C++ Builder3下实现程序自动运行的方法