最近在在一个QT的签到和点名的客户端程序,做完了之后发现可以运行多个程序的实例,于是在网上找了下资料,发现windows应用程序可以通过设置互斥量的方法,防止运行多个实例
上代码:
#include <windows.h>
bool checkOnly()
{
// 创建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"fortest_abc123" );
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 如果已有互斥量存在则释放句柄并复位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
// 程序退出
return false;
}
else
return true;
}