您的位置:首页 > 其它

如何使一个程序运行唯一实例

2017-10-11 14:28 330 查看
如果需要某个程序只运行唯一一个实例,可以通过互斥量来实现

首先创建一个命名互斥量,如果该名称的互斥量已经被创建,则GetLastError()返回ERROR_ALREADY_EXISTS,
只要确保你的程序创建的互斥量的命名唯一,则可断定已经有该程序的实例存在,简单的代码如下

int main(int argc, char *argv[])
{
HANDLE mutex = ::CreateMutex(nullptr, true, TEXT("MutexTest"));
if(!mutex)
{
return 1;
}
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
//注:如果另一个程序也创建了"MutexTest"的互斥量,并且已经运行,则GetLastError()也会返回ERROR_ALREADY_EXISTS
::MessageBox(nullptr,TEXT("XXX正在运行"),TEXT("警告"),MB_OK);
CloseHandle(mutex);
return 1;
}
CloseHandle(mutex);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: