собственно куда пишет RegisterClassEx инфу о классе окна? и как получить перечень доступных классов на текущий момент ?
Rockphorr, Вам что, нужны интернал данные и функции, как устроен гуй на км стороне ? У вас обычная задача, перечисление классов/окон/есчо_чего решается штатным путём - паблик API.
По матчасти не подскажу ( в графике не шарю ), но вот код который помогает перечислять все окна: http://www.cplusplus.com/forum/windows/25280/ Поясняю, после вызова: Код (Text): EnumWindows(EnumWindowsProc, NULL); Для каждого окна в системе последовательно будет вызываться callback-функция EnumWindowsProc, передавая в нее всю нужную инфу об окне Если есть желание узнать где все хранится - Welcome to WinDbg, отдебажив EnumWindows можно как раз понять где все это лежит.
Глянул в реакте колл стек RegisterClass, в итоге остановился на функции UserRegisterClass. Там как бы (как я понял) существует некий список, что можно получить через GetW32ThreadInfo()->ppi->pclsPrivateList ( еще можно глянуть функцию IntFindClass) https://github.com/reactos/reactos/...61d1167e9a2aa3fd6/win32ss/user/ntuser/class.c
Вот аналог из w2к InternalRegisterClassEx https://github.com/pustladi/Windows...4/private/ntos/w32/ntuser/kernel/class.c#L244
unc1e, Есть вероятность что многое поменялось со времен 2к) но это не точно. последн.. встречу с win32k.sys вспоминаю с дрожью))
superakira, Поменялось. Но по мойму инфа тс данная не нужна и понять её он не может, так что вы в пустоту говорите.
да, как устроен гуй в части управления и структурирования классов окон как я понял он наращивается по ходу подгрузки всяких dll теже комонконтролы - тривью, закладки свойств, ричэдиты всякие ... паблик апи говорит, как сделать свое, но ни слова как работает механизм учета всего этого хозяйства
Так а о чем там говорить? Простой ассоциативный список структур WNDCLASSEX, индексированный по хэшу от имени класса (ATOM).
я могу понять все, что излагается последовательно и подробно(обстоятельно) другой вопрос, что мне не все настолько интересно, что я брошусь сломя голову вникать
ну например как написать тулзу, которая смотрит для каждого процесса насколько развитая система классов с ним связана (в простейшем случае список зареганых классов каждым процессом)
Так-же смотри на плагин !userexts в windbg: https://stackoverflow.com/a/18045541 Введи !userexts в гугл, он тебе и исходный код даст (NT 4 source code на github). What a time to be alive.
Там внутри значит вызывается NtUserBuildHwndList (возвращает массив hwnd), затем просто тупо вызывается EnumWindowsProc куда передается каждый этот hwnd // Делаю проект на конференцию в вузе (баллы должны добавить к егэ), решил использовать и эту функу на нативе