單例程式的實現

2021-06-21 12:10:52 字數 806 閱讀 4433



一、利用訊號量實現程序間

**如下:

handle hsem = createsemaphore(null, 1, 1, m_pszexename); // 建立命名的訊號量

// 訊號量存在,則程式已有乙個例項執行

if (getlasterror() == error_already_exists)

// 將主窗啟用

::setforegroundwindow(hwndprevious);

// 將主窗的對話方塊啟用

::setforegroundwindow(::getlastactivepopup(hwndprevious));

// 退出本例項

return false;

}// 繼續尋找下乙個視窗

hwndprevious = ::getwindow(hwndprevious,gw_hwndnext);

}// 前一例項已存在,但找不到其主窗

// 可能出錯了

// 退出本例項

return false;

}

二、建立共享資料段實現

#pragma data_seg("mydata")  

//在此處定義變數,例如int i = 0;

#pragma data_seg ()

#pragma comment(linker,"/section:mydata,rws") //設定改段為共享段
三、利用socket通訊實現

C 實現單例項程式

原文 c 實現單例項程式 在我們經常使用的軟體中,當我們已經開啟後,再次開啟時,有的軟體不會出現兩個。例如有道詞典,會將上次的介面顯示出來,或者提示我們 該程式已經執行.我通過乙個簡單的c wpf例子來說明。首先我們要了解一下執行緒中的互斥體 mutex 引用msdn官方文件解釋,這是乙個同步基元,...

Qt單例項程式 防止程式多開

使用qlocalserver,qlocalsocket實現單例項程序,當已經存在相同程序時且視窗未啟用 遮擋,最小化,托盤 時,啟用程序主視窗。參考文章 class qlocalserver brunning false localserver null mainwindow null 說明 通過s...

EXT JS 6示例程式 Login示例程式

1.用sencha cmd生成應用程式模版 2.建立login view元件 資料夾下,有預設的 main 資料夾,這個資料夾包含了檔案main.js,maincontroller.js,和 mainmodel.js 資料夾下建立乙個資料夾 login 在 login 資料夾下,新建兩個檔案 log...