SetLastError(0); HANDLE hmutex = CreateMutex(NULL, FALSE, (LPCSTR)L"5D0E714F-8C2E-94D3-E819-92C54FDD2EDC"); if (GetLastError() == ERROR_ALREADY_EXISTS) { return 0; } SetLastError(0);
在程序开始时,创建一个互斥量对象。如果运行一个程序两次,在第二次运行程序时,由于已经创建同名互斥量对象,再次创建互斥量对象会失败。程序结束时,操作系统会自动释放该互斥量对象。所以通过这个方法可以检测程序是否只有一个实例在运行。
互斥量对象名字可以通过vs自带的GUID生成器生成,防止不同程序互斥量对象名字相同。