天天看點

Qt之運作一個執行個體程序簡述QSharedMemoryQLocalServerQtSingleApplication任務清單更多參考

釋出程式的時候,我們往往會遇到這種情況:

隻需要使用者運作一個執行個體程序

使用者可以同時運作多個執行個體程序

一個執行個體程序的軟體有很多,例如: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>