Я пытаюсь получить дескриптор 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 да.
Кто-нибудь может помочь?
Я нашел ответ. Нужно перебирать все 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);
Других решений пока нет …