Получение дескрипторов окон, зная идентификатор процесса
Уважаемые господа программисты! Возник вопрос, на который без вашей помощи пока никак не могу найти ответ. Дело состоит в следующем. С помощью функций Process32First и Process32Next я получаю список всех процессов, созданных в системе. (Функция EnumProcesses мне не подходит, так как мне нужны названия процессов, а не их идентификаторы). Но мне нужно получить дескрипторы окон , связанных с процессами. Побродив несколько часов по бескрайним разделам MSDN, я обнаружил только одну функцию, которая возвращает дескриптор окна по идентификатору потока, создавшего это окно- это функция EnumThreadWindows, одним из параметров которой является идентификатор потока, дескрипторы окон которого нужно получить. Проблема состоит в том, что я не могу получить этот самый идентификатор потока. Использовать функцию GetWindowThreadProcessId с целью получения идентификатора потока, создавшего окно, по известному идентификатору процесса не имеет смысла, так как первым параметром ей нужно передать дескриптор окна, который я смогу получить только в функции обратного вызова EnumThreadProc (второй параметр функции EnumThreadWindows). Получается какой-то круговорот. Получить список дескрипторов не могу из-за отсутствия идентификаторов потоков; идентификаторы потоков, породивших окна также не могу получить из-за отсутствия дескрипторов окон. Может кто-нибудь знает, как выйти из этой ситуации?
Идентификаторы потоков можно получить аналогичным образом с помощью функций Thread32First, Thread32Next. А в качестве первого параметра в функции CreateToolhelp32Snapshot надо передать TH32CS_SNAPTHREAD.
Огромное СПАСИБО... Надо быть внимательней... Ведь читал про функцию CreateToolhelp32Snapshot - там же всё написано...