您的位置:首页 > 其它

保证应用程序只运行一个实例的技巧

2011-05-24 15:50 253 查看
很多应用程序仅允许一个实例运行,那么如何做到呢?下面介绍一种方法:

1.使用互斥对象实现;

在调用CreateMutex函数创建一个命名互斥对象的时候,如果返回值是一个有效句柄,就可以直接调用GetLastError函数;

如果返回值是ERROR_ALREADY_EXISTS就表明先前已经创建了这个命名互斥对象,因此就知道已经有一个应用程序实例

在运行了;

HANDLE hMutex;

int main()
{
hMutex = CreateMutex(NULL, TRUE, "me");
if(hMutex)
{
cout << "only one instance can run!" << endl;
return;
}
}


2.使用事件对象实现,原理一样;

在调用CreateEvent函数创建一个命名时间对象的时候,如果返回值是一个有效句柄,就可以直接调用GetLastError函数;

如果返回值是ERROR_ALREADY_EXISTS就表明先前已经创建过了;

HANDLE hEvent;

int main()
{
hEvent = CreateEvent(NULL, FALSE, TRUE, NULL);
if(hEvent)
{
if(ERROR_ALREADY_EXISTS == GetLastError() )
{
cout << "Only one instance can run!" << endl;
return ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: