BOOL CDlg::SetForeGroundWindowEx()
{
HWND hForeWnd = NULL;
HWND hWnd= GetSafeHwnd();
DWORD dwForeID;
DWORD dwCurID;
hForeWnd = ::GetForegroundWindow();
dwCurID = ::GetCurrentThreadId();
dwForeID = ::GetWindowThreadProcessId( hForeWnd, NULL );
if (hForeWnd==GetSafeHwnd())//如果当前窗口已经是前景窗口 直接返回
return TRUE;
if(!AttachThreadInput( dwCurID, dwForeID, TRUE)) //切换键盘输入焦点AttachThreadInput
{
return FALSE;
}
//if(!ShowWindow(SW_SHOWNORMAL )) //显示窗口ShowWindow
//{
//
// return FALSE;
//}
if(!::SetWindowPos(hWnd,HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE )) //更改窗口的Zorder,SetWindowPos使之最上,为了不影响后续窗口的Zorder,改完之后,再还原
{
return FALSE;
}
if(!::SetWindowPos(hWnd,HWND_NOTOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE ))
{
return FALSE;
}
if(!SetForegroundWindow())
{
return FALSE;
}
}
{
HWND hForeWnd = NULL;
HWND hWnd= GetSafeHwnd();
DWORD dwForeID;
DWORD dwCurID;
hForeWnd = ::GetForegroundWindow();
dwCurID = ::GetCurrentThreadId();
dwForeID = ::GetWindowThreadProcessId( hForeWnd, NULL );
if (hForeWnd==GetSafeHwnd())//如果当前窗口已经是前景窗口 直接返回
return TRUE;
if(!AttachThreadInput( dwCurID, dwForeID, TRUE)) //切换键盘输入焦点AttachThreadInput
{
return FALSE;
}
//if(!ShowWindow(SW_SHOWNORMAL )) //显示窗口ShowWindow
//{
//
// return FALSE;
//}
if(!::SetWindowPos(hWnd,HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE )) //更改窗口的Zorder,SetWindowPos使之最上,为了不影响后续窗口的Zorder,改完之后,再还原
{
return FALSE;
}
if(!::SetWindowPos(hWnd,HWND_NOTOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE ))
{
return FALSE;
}
if(!SetForegroundWindow())
{
return FALSE;
}
return TRUE;
//AttachThreadInput( dwCurID, dwForeID, FALSE);
}