Qt實現應用單實例運行(1)-使用共享內存

在工程的main函數中添加以下代碼(在QApplicationapp(argc, argv);和創建主窗口語句之間添加即可):

// 確保只運行一次

QSystemSemaphore sema("JAMKey",1,QSystemSemaphore::Open);

sema.acquire();// 在臨界區操作共享內存  SharedMemory

QSharedMemory mem("SystemObject");// 全局對象名

if (!mem.create(1))// 如果全局對象以存在則退出

{

    QMessageBox::information(0, MESSAGEBOXTXT,"Aninstance has already been running.");

    sema.release();// 如果是 Unix 系統,會自動釋放。

    return 0;

}

sema.release();// 臨界區

備註:以上內容引自(經過了簡單的修改):http://blog.csdn.net/tingsking18/article/details/5610123

本方法最爲簡單,可以實現應用的單實例運行,但無法自動激活窗口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章