Qt防止程式多開
阿新 • • 發佈:2018-12-23
有些應用程式只允許使用者開啟一個,則需要一些手段防止程式多開。
下面這個方法是通過共享記憶體的方式來解決的,原理:
執行主函式前先訪問固定的共享記憶體段,看有沒有被使用,沒有使用就使用該記憶體段,並繼續執行程式。
如果該共享記憶體段已經被使用則認為是多開的程式,直接return退出程序。
該方式只需對main.cpp稍作修改即可。
修改前:
#include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }
修改後:
#include "widget.h" #include <QApplication> #include <QSharedMemory> int main(int argc, char *argv[]) { QApplication a(argc, argv); QSharedMemory shared_memory; shared_memory.setKey(QString("666666"));//設定固定共享記憶體段的key值 if(shared_memory.attach()) //嘗試將程序附加到該共享記憶體段 { return 0; } if(shared_memory.create(1)) //建立1byte的共享記憶體段 { Widget w; w.show(); return a.exec(); } return 0; }