bool checkOnly() { // 创建互斥量 HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Process"); // 检查错误代码 if (GetLastError() == ERROR_ALREADY_EXISTS) { // 如果已有互斥量存在则释放句柄并复位互斥量 CloseHandle(m_hMutex); QMessageBox::information(NULL, QString("提示"), QString("程序已经在运行中,不能重复启动!"), MB_OK + MB_ICONWARNING); m_hMutex = NULL; // 程序退出 return false; } else return true; }
Process为互斥量,通过它来区分是否为同一个程序
推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs