当前位置:C++技术网 > 资讯 > 让一个程序只能运行一个实例实现方法

让一个程序只能运行一个实例实现方法

更新时间:2015-06-25 17:23:39浏览次数:1+次

    EXE文件被执行后,就创建了一个实例。如果没有特别限制,一个EXE可以被启动很多个。这样就重复运行了很多实例。有时候我们并不需要这样的结果,需要同时只能运行一个实例。下面介绍如何实现。
    在窗口初始化时,MFC执行窗口初始化函数OnInitDialog,在这个函数中,我们就可以加入检测代码,如下。 
::CreateMutex(NULL,TRUE,_T("myapp"));// - 创建一个互斥体,用于阻止重复启动
if(GetLastError()==ERROR_ALREADY_EXISTS)// - 检测返回码确定是否重复启动
{
    AfxMessageBox(_T("已经有一个实例在运行了,不能重复运行!"));
    exit(-1);// - 终止程序,传入退出嘛,可以自己传入任意一个整数
}
     如果在初始化实例函数InitInstance中就只要返回即可结束程序。这样把exit换成return 即可。
    CreateMutex第一个参数传入NULL,表示默认的安全性,第二个传入TRUE表示调用CreateMutex函数的就是这个互斥体的拥有者,FALSE则不是拥有者。最后一个就是一个名字,任意取都可以。这个就这么用,要具体了解互斥体,则需要学习线程同步的知识。