主要是通过互斥量内查东西来实现措施间互斥。
// CEcopClientApp 初始化
HANDLE m_hMutexMark = NULL;
BOOL CEcopClientApp::InitInstance()
{
//措施互斥代码,保证措施只有一份在运行---------------
m_hMutexMark = ::CreateMutex(NULL, TRUE, "MYECOPCLIENT_MARK");
if (GetLastError() == ERROR_ALREADY_EXISTS) //措施已经运行
{
HWND oldHWnd = NULL;
oldHWnd = ::FindWindow(NULL, _T(dfSYSTEMNAME)); //查找已经运行的措施
if (oldHWnd)
{
::ShowWindow(oldHWnd, SW_MAXIMIZE ); //激活显示找到的已运行的措施
::SetForegroundWindow(oldHWnd);
//将已运行的措施设置为当前窗口
}
CloseHandle(m_hMutexMark);
m_hMutexMark = NULL;
return FALSE;
}
windows中实现有不异的措施运行就不在运行新的措施。
,