把这些代码放在对话框初始化的部分,就可以建立进程互斥体,避免同一个程序运行多个进程。
/**********************************************************************************/
//只有一个程序运行
//创建进程互斥体GPSGUID
HANDLE m_hMutex = CreateMutex(NULL,FALSE,_T("INSU"));
if (m_hMutex == NULL)
{
return FALSE;
}
//如果程序已经存在并且正在运行
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
HWND hProgramWnd = ::FindWindow(NULL,L"保险查勘");
if (hProgramWnd)
{
this->m_nCmdShow = SW_SHOW;
//::BringWindowToTop(hProgramWnd);
//SetWindowPos(hProgramWnd,HWND_NOTOPMOST,0,0,30,50,SWP_NOSIZE|SWP_NOMOVE);
//SetWindowPos(hProgramWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE||SWP_NOSIZE) ;
::SetForegroundWindow(hProgramWnd);//我用着两句代替了上面的两句,就搞定了总是
::SetActiveWindow(hProgramWnd);//出现窗口可以移动的怪现象。
}
//关闭进程互斥体
CloseHandle(m_hMutex);
m_hMutex = NULL;
return FALSE;
}
/**********************************************************************************/