多个实例运行,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删除看看