釋出程式的時候,我們往往會遇到這種情況:
隻需要使用者運作一個執行個體程序
使用者可以同時運作多個執行個體程序
一個執行個體程序的軟體有很多,例如:360、酷狗…
多個執行個體程序的軟體也很多,例如:Visual Studio、Qt Ctretor、QQ…
下面我們來介紹下如何實作一個執行個體程序。
<a href="#%E7%AE%80%E8%BF%B0">簡述</a>
<a href="#qsharedmemory">QSharedMemory</a>
<a href="#qlocalserver">QLocalServer</a>
<a href="#qtsingleapplication">QtSingleApplication</a>
<a href="#%E4%BB%BB%E5%8A%A1%E5%88%97%E8%A1%A8">任務清單</a>
<a href="#%E6%9B%B4%E5%A4%9A%E5%8F%82%E8%80%83">更多參考</a>
使用共享記憶體來實作,key值唯一,一般可以用組織名+應用名來确定。
首先,建立一個共享記憶體區,當第二個程序啟動時,判斷記憶體區資料是否建立,如果有,可以激活已打開的窗體,也可以退出。
當程式crash的時候,不能及時清除共享區資料,導緻程式以後不能正常啟動。
QSingleApplication.h
QSingleApplication.cpp
使用方式
QSingleApplication位于qt-solution裡面,并不包含在Qt庫中,遵循 LGPL 協定。
運作程式時,周遊任務清單,檢視是目前所有運作中的程序,如果目前程序位置在映射路徑中可以找到,則說明程式已經運作,否則,未運作。
<a href="https://github.com/itay-grudev/SingleApplication">SingleApplication</a>
<a href="http://berenger.eu/blog/c-qt-singleapplication-single-app-instance/">Single App Instance</a>