WIN32 使用 MUTEX 实现禁止多开
生活随笔
收集整理的這篇文章主要介紹了
WIN32 使用 MUTEX 实现禁止多开
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
WIN32 互斥體 MUTEX 可以跨進(jìn)程獲取,因此可以用它實(shí)現(xiàn)簡(jiǎn)易的防多開(kāi),進(jìn)程啟動(dòng)時(shí)嘗試獲取 MUTEX,如果獲取失敗說(shuō)明沒(méi)有多開(kāi),如果獲取成功,則提示錯(cuò)誤信息。
下面是執(zhí)行結(jié)果:
第一個(gè)程序已經(jīng)在運(yùn)行:
如果嘗試多開(kāi),則會(huì)彈出錯(cuò)誤信息,并退出進(jìn)程
代碼
// MutexLimitMultiOpen2.cpp : Defines the entry point for the application. //#include "stdafx.h"BOOL CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {switch(uMsg){case WM_CLOSE:{EndDialog(hDlg, 0);return TRUE;}}return FALSE; }int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {HANDLE hMutex;// 嘗試獲取hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "MYMUTEXTAG");if (NULL == hMutex){// 如果沒(méi)有,說(shuō)明咱是第一個(gè),那就創(chuàng)建一個(gè)MUTEXhMutex = CreateMutex(0, FALSE, "MYMUTEXTAG");}else{// 如果有,說(shuō)明已經(jīng)有了,不準(zhǔn)多開(kāi)MessageBox(0, "請(qǐng)不要多開(kāi)", "Error", MB_OK);return -1;}DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DlgProc);ReleaseMutex(hMutex);return 0; }總結(jié)
以上是生活随笔為你收集整理的WIN32 使用 MUTEX 实现禁止多开的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WIN32多线程抢红包练习
- 下一篇: WIN32 使用事件实现高效生产者消费者