[USER32] Fix Task Switcher (#976)

This fix is needed for the Delphi GUI programs.
- Don't enumerate the windows whose owner window exists.
- Use PostMessage SC_RESTORE instead of ShowWindowAsync SW_RESTORE.
CORE-15165
This commit is contained in:
Katayama Hirofumi MZ 2018-10-25 22:59:44 +09:00 committed by GitHub
parent ea84aef662
commit 4ccad609e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -125,7 +125,7 @@ void ResizeAndCenter(HWND hwnd, int width, int height)
void MakeWindowActive(HWND hwnd)
{
if (IsIconic(hwnd))
ShowWindowAsync(hwnd, SW_RESTORE);
PostMessageW(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
BringWindowToTop(hwnd); // same as: SetWindowPos(hwnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); ?
SetForegroundWindow(hwnd);
@ -171,6 +171,9 @@ BOOL CALLBACK EnumerateCallback(HWND window, LPARAM lParam)
if (!IsWindowVisible(window))
return TRUE;
if (GetWindow(window, GW_OWNER) != NULL)
return TRUE;
GetClassNameW(window, windowText, _countof(windowText));
if ((wcscmp(L"Shell_TrayWnd", windowText)==0) ||
(wcscmp(L"Progman", windowText)==0) )