利用互斥對(duì)象判斷該對(duì)象是否存在來(lái)在初始化程序里結(jié)束程序運(yùn)行解決每個(gè)應(yīng)用程序只能運(yùn)行一個(gè)實(shí)例
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,計(jì)算機(jī)技術(shù)的不斷提升,越來(lái)越多的應(yīng)用程序被開(kāi)發(fā)出來(lái)。但是,有些應(yīng)用程序需要限制其只能運(yùn)行一個(gè)實(shí)例,這就需要用到互斥對(duì)象。一、新建MFC項(xiàng)目要?jiǎng)?chuàng)建一個(gè)只能運(yùn)行一個(gè)實(shí)例的應(yīng)用程序,首
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,計(jì)算機(jī)技術(shù)的不斷提升,越來(lái)越多的應(yīng)用程序被開(kāi)發(fā)出來(lái)。但是,有些應(yīng)用程序需要限制其只能運(yùn)行一個(gè)實(shí)例,這就需要用到互斥對(duì)象。
一、新建MFC項(xiàng)目
要?jiǎng)?chuàng)建一個(gè)只能運(yùn)行一個(gè)實(shí)例的應(yīng)用程序,首先需要新建一個(gè) MFC 項(xiàng)目。具體操作如下:
1. 打開(kāi) Visual Studio 編輯器,選擇“新建項(xiàng)目”。
2. 在彈出的對(duì)話(huà)框中,選擇“Visual C ” -> “MFC” -> “MFC 應(yīng)用程序” -> 輸入名稱(chēng) -> 點(diǎn)擊“確定”。
二、設(shè)置應(yīng)用程序向?qū)?/p>
新建 MFC 項(xiàng)目后,需要進(jìn)行應(yīng)用程序向?qū)У脑O(shè)置。具體步驟如下:
1. 在彈出的對(duì)話(huà)框中,選擇默認(rèn)設(shè)置直接點(diǎn)擊“確定”即可。
三、定義句柄
在應(yīng)用程序類(lèi)中定義一個(gè)句柄,以便后續(xù)使用。具體步驟如下:
1. 按照?qǐng)D示步驟,在應(yīng)用程序類(lèi)的頭文件中添加以下代碼:
```C
HANDLE hMutex;
```
四、創(chuàng)建互斥對(duì)象
在應(yīng)用程序中創(chuàng)建互斥對(duì)象,以判斷該對(duì)象是否存在。具體操作如下:
1. 在 InitInstance 函數(shù)中,添加以下代碼:
```C
hMutex CreateMutex(NULL, 0, _T("123"));
```
五、判斷互斥對(duì)象
如果互斥對(duì)象已經(jīng)存在,那么就返回 false 并結(jié)束當(dāng)前應(yīng)用程序的運(yùn)行。具體操作如下:
```C
if (hMutex ! NULL GetLastError() ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
return FALSE;
}
```
六、運(yùn)行測(cè)試
最后,打開(kāi)運(yùn)行編譯生成的可執(zhí)行程序進(jìn)行多次運(yùn)行測(cè)試。如果程序已經(jīng)運(yùn)行,則無(wú)法再次啟動(dòng)。
以上就是利用互斥對(duì)象判斷該對(duì)象是否存在來(lái)實(shí)現(xiàn)每個(gè)應(yīng)用程序只能運(yùn)行一個(gè)實(shí)例的方法。