// VC/MFC应用禁止多开
// 编译环境:VS2017
// MFC在 InitInstance 中创建Mutex来防止多开
HANDLE hMutex;
//hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, theApp.m_pszAppName);
// 创建互斥体
hMutex = CreateMutex(NULL, FALSE, _T("Microsoft"));
DWORD dwError = GetLastError();
if (NULL == hMutex)
{
CString szMsg;
szMsg.Format(_T("CreateMutex error:%d\n"), dwError);
OutputDebugString(szMsg);
}
else
{
if (ERROR_ALREADY_EXISTS == dwError)
{ //互斥体已存在,发送WM_QUIT消息退出
OutputDebugString(_T("CreateMutex opened an existing mutex.\n"));
CloseHandle(hMutex);
//PostQuitMessage(0);
//PostMessage(theApp.m_pMainWnd->m_hWnd, WM_QUIT, 0, 0);
//PostMessage(AfxGetMainWnd()->GetSafeHwnd(), WM_QUIT, 0, 0);
PostMessage(NULL, WM_QUIT, (WPARAM)1, 0);
}
else
{
// 正常流程
OutputDebugString(_T("CreateMutex created a new mutex.\n"));
CMutexDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// “确定”来关闭对话框
VC/MFC应用禁止多开
最新推荐文章于 2023-02-01 08:48:15 发布
本文介绍了如何在使用VC/MFC开发的应用程序中实现防止多个实例同时运行的策略,确保每次只能有一个实例处于活动状态。通过检查注册表、共享内存等方式来检测并控制程序的启动。

最低0.47元/天 解锁文章
918

被折叠的 条评论
为什么被折叠?



