SW_MAXIMIZE ); //激活显示找到的已运行的程序 ::SetForegroundWindow(oldHWn

时间:2021-09-29 07:37:32

主要是通过互斥量内查东西来实现措施间互斥。

// 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中实现有不异的措施运行就不在运行新的措施。