国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

如何確保VC/MFC程序只運(yùn)行一個(gè)實(shí)例?

在很多項(xiàng)目中,需要確保一個(gè)進(jìn)程只運(yùn)行一次,比如串口、板卡等開(kāi)發(fā)程序,由于資源是獨(dú)占的,所以只能運(yùn)行一次。下面介紹一種方法來(lái)實(shí)現(xiàn)這個(gè)功能。1. 聲明一個(gè)GUID首先需要在程序中聲明一個(gè)GUID,該GUI

在很多項(xiàng)目中,需要確保一個(gè)進(jìn)程只運(yùn)行一次,比如串口、板卡等開(kāi)發(fā)程序,由于資源是獨(dú)占的,所以只能運(yùn)行一次。下面介紹一種方法來(lái)實(shí)現(xiàn)這個(gè)功能。

1. 聲明一個(gè)GUID

首先需要在程序中聲明一個(gè)GUID,該GUID將作為進(jìn)程的唯一標(biāo)識(shí)符。可以使用以下代碼來(lái)聲明GUID:

```

static const GUID CDECL BASED_CODE _tlid

{ 0x12345678, 0x1234, 0x5678, { 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78 } };

```

2. 聲明一個(gè)句柄

接下來(lái)需要聲明一個(gè)句柄,作為全局標(biāo)識(shí)符??梢允褂靡韵麓a來(lái)聲明句柄:

```

HANDLE hMutex;

```

3. 在應(yīng)用程序的*App::InitInstance()函數(shù)中,加入以下代碼

在應(yīng)用程序的*App::InitInstance()函數(shù)中,需要加入以下代碼,來(lái)創(chuàng)建一個(gè)互斥體,并檢查是否已經(jīng)創(chuàng)建過(guò)。如果已經(jīng)創(chuàng)建過(guò),則退出程序。

```

// Create a mutex with a name based on the GUID

CString strMutexName;

(_T("Global%s"), _tlid);

hMutex ::CreateMutex(NULL, TRUE, strMutexName);

if (ERROR_ALREADY_EXISTS ::GetLastError())

{

// The mutex already exists, so another instance is running.

TRACE(_T("Application instance already running

"));

return FALSE;

}

```

4. 在*App::ExitInstance()函數(shù)中,關(guān)閉句柄

在程序退出時(shí),需要關(guān)閉之前創(chuàng)建的句柄。可以使用以下代碼來(lái)關(guān)閉句柄:

```

if (hMutex ! NULL)

{

::ReleaseMutex(hMutex);

::CloseHandle(hMutex);

hMutex NULL;

}

```

5. 測(cè)試程序

現(xiàn)在,你可以測(cè)試程序了。這個(gè)程序/進(jìn)程只能運(yùn)行一次。如果嘗試打開(kāi)第二個(gè)實(shí)例,程序?qū)⒅苯油顺觥?/p>

結(jié)論

通過(guò)以上步驟,我們可以很容易地確保VC/MFC程序只運(yùn)行一個(gè)實(shí)例。這對(duì)于某些需要獨(dú)占資源的程序非常有用。

標(biāo)簽: