本文简单介绍下VC如何使一个程序一次只运行一次。
新建对话框应用程序,并且运行程序。
同时点击多次运行多个当前程序。
设置一次只运行当前程序一个。
BOOL CProgramRunOneApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
//设置一次只能运行一个程序开始**
HANDLE handle = ::CreateMutex(NULL,FALSE,"my programe");
DWORD res = 0;
res = GetLastError();
if (res == ERROR_ALREADY_EXISTS)
{
AfxMessageBox("一次只能运行一个程序");
return FALSE;
}
//设置一次只能运行一个程序结束**
CProgramRunOneDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
再次多次运行程序,试试效果。