在InitInstance()函数中添加:
CreateMutex(NULL, TRUE, TEXT("主界面标题名称")); //避免程序的多开 xxxx为信号量的名字 可随意
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
CWnd* cwnd = CWnd::FindWindow(NULL, TEXT("主界面标题名称"));//windowname为你的主窗体的标题,当然你也可以通过进程来找到主窗体。
if (cwnd)//显示原先的主界面
{
cwnd->ShowWindow(SW_SHOWNORMAL);
cwnd->SetForegroundWindow();
}
return FALSE;
}
PS:要添加在InitInstance函数最前面,当已经打开exe程序后,再次双击exe图标会显示已经打开的exe程序
本文介绍了一种在Windows环境下防止应用程序多次打开的方法。通过在InitInstance()函数中使用CreateMutex和GetLastError函数,检查程序是否已经运行。若已运行,则找到并激活已存在的窗口,避免重复启动。
3965

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



