保证只有一个当前程序在运行

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生成器生成,防止不同程序互斥量对象名字相同。

原文地址:https://www.cnblogs.com/HadesBlog/p/7668282.html