读书人

多个实例运行GetLastError()总是返回

发布时间: 2012-04-30 22:33:26 作者: rapoo

多个实例运行,GetLastError()总是返回0
现象:多次运行,总是提示第一次运行,并且每次运行hMutex返回值都是相同的。
问题:通过互斥函数来防止程序多次运行,结果运行多次,它总是提示第一次运行。
编译器 :VC6.0
操作系统: WINDOWS XP
分不多,请帮忙解决。


代码如下所示:

#include <windows.h>
#include <iostream.h>
HANDLE hMutex;
void main()

{
hMutex=CreateMutex(NULL,FALSE,"Proc");
cout<<"hMuter=" <<hMutex<<endl;
if(hMutex)
{
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
cout <<"互斥对象已经运行!"<<endl;
return;
}
else
{
cout <<"第一次运行"<<endl;
}
}
else
{
cout <<"创建互斥对象失败"<<endl;
}
return ;
}

[解决办法]
应该是防止多个实例吧?

你开了不管,多点击几次.exe文件试试?
[解决办法]
GetLastError必须要紧接着可能出错的api后,不然错误码会被覆盖。试试把CreateMutex后的那句cout删除看看

读书人网 >C++

热点推荐