方法1:
CXXXXApp::InitInstance()
HANDLE hMutex=CreateMutex(NULL,TRUE,_T("PCP"));
if (hMutex)
{
if(ERROR_ALREADY_EXISTS==GetLastError())
{
CloseHandle(hMutex);
HWND hWnd = ::FindWindow(NULL,_T("PCP"));
if (hWnd)
{
::ShowWindow(hWnd,SW_RESTORE);
::SetForegroundWindow(hWnd);
return FALSE;
}
return FALSE;
}
}
方法2
CXXXXApp::InitInstance()
HANDLE hSem = CreateSemaphore(NULL,1,1,_T("PCP"));
if (hSem)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
CloseHandle(hSem);
HWND hWndPrev = ::GetWindow(::GetDesktopWindow(),GW_CHILD);
while (::IsWindow(hWndPrev))
{
if (::GetProp(hWndPrev,_T("PCP")))
{
::ShowWindow(hWndPrev,SW_RESTORE);
::SetForegroundWindow(hWndPrev);
return FALSE;
}
hWndPrev = ::GetWindow(hWndPrev,GW_HWNDNEXT);
}
}
}
在 CXXXXDlg::OnInitDialog()
::SetProp(m_hWnd,_T("PCP"),(HANDLE)1);
在 CXXXXDlg::OnClose()
::RemoveProp(m_hWnd,_T("PCP"));
方法3
CXXXXApp::InitInstance()
CWnd *pWndPrev, *pWndChild;
if(pWndPrev=CWnd::FindWindow(_T("#32770"),_T("PCP"))) //SPY++ 查看该对话框
{
if(pWndPrev->IsIconic())
{
pWndPrev->ShowWindow(SW_RESTORE);
pWndPrev->SetForegroundWindow();
}
else
{
pWndChild=pWndPrev->GetLastActivePopup();
pWndChild->SetForegroundWindow();
}
return FALSE;
}