Как сделать приложение одиночка средствами Qt5+ под Windows (xp, 7, 8, 10) ? Чтобы нельзя было запустить два экземпляра одновременно.
Файл будет удалён автоматически
Каждый пользователь может запустить свою версию.
#include <QString>
#include <QLockFile>
#include <QDir>
#include <QMessageBox>
QString tmpDir = QDir::tempPath();
QLockFile lockFile(tmpDir + "/<unique identifier>.lock");
if(!lockFile.tryLock(100)){
QMessageBox msgBox;
msgBox.setIcon(QMessageBox::Warning);
msgBox.setText("You already have this app running."
"\r\nOnly one instance is allowed.");
msgBox.exec();
return 1;
}
Семафоры и разделяемая память
Уникальный инстанс приложения на всю машину
QSystemSemaphore sema("<unique identifier>", 1);
sema.acquire();
#ifndef Q_OS_WIN32
// в Unix разделяемая память не чистится при креше
// Очищаем, если осталась от предыдущих запусков
QSharedMemory nix_fix_shmem("<unique identifier 2>");
if(nix_fix_shmem.attach()){
nix_fix_shmem.detach();
}
#endif
QSharedMemory shmem("<unique identifier 2>");
bool is_running;
if (shmem.attach()){
is_running = true;
}else{
shmem.create(1);
is_running = false;
}
sema.release();
if(is_running){
QMessageBox msgBox;
msgBox.setIcon(QMessageBox::Warning);
msgBox.setText("You already have this app running."
"\r\nOnly one instance is allowed.");
msgBox.exec();
return 1;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не могу правильно подобрать структуру классов и методов для решения задачи оптимизации именно в стиле ООПДано: функция с ограничениями (равенства...
Разбираюсь с QDockWidgetСтолкнулся с непонятной для меня вещью - под MS Windows заголовок окошка в доке отображается всегда одинаково, вне зависимости...
Нужно отсортировать слова, например: ёжик, Азбука, аромат, ЁжПроблема в том, что буква ё не сортируется