int main()
{
//.........
QSystemSemaphore sema("JAMKey",1,QSystemSemaphore::Open);
sema.acquire();// 在临界区操作共享内存 SharedMemory
QSharedMemory mem("SystemObject");// 全局对象名
if (!mem.create(1))// 如果全局对象以存在则退出
{
QMessageBox::information(0,u8"提示","An instance has already been running.");
sema.release();// 如果是 Unix 系统,会自动释放。
return 0;
}
sema.release();// 临界区
//.........
return 0;
}
--------------------------------------------------------------------------------
//设置为开机启动
static void AutoRunWithSystem(bool IsAutoRun, QString AppName, QString AppPath)
{
QSettings *reg = new QSettings(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
QSettings::NativeFormat);
if (IsAutoRun) {
reg->setValue(AppName, AppPath);
} else {
reg->setValue(AppName, "");
}
}