WinApi — Как получить SHELLDLL_DefView

Я пытаюсь получить дескриптор SHELLDLL_DefView.

Итак, у меня есть этот код.

HWND hProgman = FindWindow(L"Progman", NULL);
HWND hWnd = FindWindowEx(hProgman, 0, L"SHELLDLL_DefView", NULL);

Eveyrtihing работает нормально, пока я не изменю настройку рабочего стола Windows на слайд-шоу. Затем, когда я ищу с помощью spy ++ иерархии окон, у SHELLDLL_DefView есть другой родитель. Теперь это # ​​32769 (Рабочий стол) -> WorkerW -> SHELLDLL_DefView. Так что я не могу найти это. Проблема в том, что когда я пытаюсь

HWND desktop = GetDesktopWindow();
HWND hWnd = FindWindowEx(desktop , 0, L"WorkerW", NULL);
HWND hWnd = FindWindowEx(hWnd, 0, L"SHELLDLL_DefView", NULL);

Чем SHELLDLL_DefView не найден. РабочийW да.

Кто-нибудь может помочь?

0

Решение

Я нашел ответ. Нужно перебирать все WorkerW.

HWND destop = GetDesktopWindow();
HWND hWorkerW = NULL;
HWND hShellViewWin = NULL;
do
{
hWorkerW = FindWindowEx(destop, hWorkerW, L"WorkerW", NULL);
hShellViewWin = FindWindowEx(hWorkerW, 0, L"SHELLDLL_DefView", 0);
} while (hShellViewWin == NULL && hWorkerW != NULL);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]