· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Где в системе хранится информация о классе окна?

Посл.отвђт Сообщенiе


Дата: Сен 19, 2004 13:44:44

Subj


Дата: Сен 19, 2004 15:06:33

Где находится не знаю, но писать/читать туда можно через SetClassLong/GetClassLong


Дата: Сен 19, 2004 18:09:47

Loger
> но писать/читать туда можно через SetClassLong/GetClassLong

И класс окна сменить можно, в тот момент когда окно нах-ся на desktop'е ?? %)


Дата: Сен 19, 2004 18:28:35

:hwnd explorer
Handle    Class                         WinProc    TID  Module
 010090    tooltips_class32             719CBAA8   7E8  comctl32
 0201AC    tooltips_class32             719CBAA8   7E8  shell32
 0901E2    BaseBar                      7757CD4B   7E8  shell32
  BB0244    MenuSite                    7757CD4B   7E8  shell32
   0305D6    SysPager                   7195DB22   7E8  shell32
    0205CE    ToolbarWindow32           7196BC2D   7E8  shell32
:
:
:hwnd -x 010090
    Hwnd          : 010090    (BC64A630)
    Class Name    : tooltips_class32
    Module        : comctl32
    Window Proc   : 719CBAA8
    Win Version   : 0.00
    Parent        : 010014    (BC6406E8)
    Next          : 0304EA    (BC6DC990)
    Owner         : 03006C    (BC649650)
    Style         :
    Window Rect   : 222, 708, 586, 738 (364 x 30)
    Client Rect   : 1, 1, 363, 29 (362 x 28)
:
:
:dd BC64A630
0010:BC64A630 ????????  ????????  ????????  ????????      ................
0010:BC64A640 ????????  ????????  ????????  ????????      ................
0010:BC64A650 ????????  ????????  ????????  ????????      ................
0010:BC64A660 ????????  ????????  ????????  ????????      ................
:
:
:addr explorer
:dd BC64A630
0010:BC64A630 00010090  00000003  E18478A0  812FC038      .........x..8./.
0010:BC64A640 BC64A630  00000400  80000300  200800A8      0.d............
0010:BC64A650 84800003  71950000  00000000  BC6DC990      .......q......m.
0010:BC64A660 00000000  BC6406E8  00000000  BC649650      ......d.....P.d.



И позыркай ещё "USER Object Table" в "Using SoftICE".


Дата: Сен 19, 2004 18:39:13 · Поправил: bogrus

Недавно помнишь говорили о превращении обычного потока в GUI (когда появляеться очередь сообщений и т.д.) , так вот при первом превращении ядро выделяет участок хипа в нашем процессе и этот участок уже заполнен всякой х-ней , в том числе и предопределёнными классами окон .

И при инициализации common controls (InitCommonControlsEx,icce) регистрируються новые классы (смотря что проставили - ICC_COOL_CLASSES,ICC_USEREX_CLASSES и т.д.) , информация о них тоже записуеться в тот участок .

Four-F Не видел , что ты уже ответил . Это я про юзер моде говорил , что смог увидеть :)


Дата: Сен 19, 2004 18:57:30

Хе , в том участке лежат классы окон от Олли (можно юзать вместо IsDebuggerPresent :) , ещё например лежит Windows Commander , хотя он у меня не запущен .

_779734437__memory.png


Дата: Сен 19, 2004 19:06:35

Four-F
Это мало что говорит, я надеялся что есть какие-нибудь "полу"документированные структуры в которых он(класс окна) содержится, например функция GetClassName куда-то там по адресу fs:[18] и т.д. лезет за классом, кажется, я пристально ещё не исследовал.


Дата: Сен 19, 2004 19:19:35

Asterix „GetClassName куда-то там по адресу fs:[18] и т.д. лезет за классом“

Так я за ней и следил :) Туда она и лезет . Только вот в том участке свиду такой бардак , надо бы узнать в каких структурах там это всё лежит .


Дата: Сен 19, 2004 19:27:16

И ещё интересно, что будет если, всё-таки, удастся обнаружить этот класс окна и пропатчить его прямо в памяти, т.е. например что будет с тем окном, которое в этот момент нах-ся на desktop'е если мы таким варварским способом сменим его класс ;-) ?


Дата: Сен 19, 2004 19:27:28

Вот перегрузился смотрю тот участок намного чище , т.е. там собираються все окна (и менюхи кстати) за весь сеанс работы виндовз . Это может быть полезно . Интересно под w9x тоже самое ?


Дата: Сен 19, 2004 19:31:21

„и пропатчить его прямо в памяти“

Там стоит атрибут только чтение . А запись поставить не даёт !!


Дата: Сен 19, 2004 19:44:27

bogrus
А из драйвера?
Попробуй под SoftIce пропатчить.


Дата: Сен 19, 2004 19:51:25 · Поправил: bogrus

Не пользуюсь я SoftIce-ом , не умею и пока лень ставить :)
Сдаёться мне , что ядро динамически проецирует какой-то свой участок\участки на все GUI процессы (имею ввиду на их юзер пространство) , может быть такое ?

Это наверное эти , USER GDI объекты создаваемые HMAllocObject (из доки к айсу) ?


Дата: Сен 19, 2004 22:04:44

Asterix, я не совсем верно понял вопрос. Самому лень смотреть, но в исходниках встречается функция InternalRegisterClassEx и структура CLS.

[ bogrus: Сдаёться мне, что ядро динамически проецирует какой-то свой участок\участки на все GUI процессы (имею ввиду на их юзер пространство), может быть такое ? ]

Может. Только, IMHO, логичнее запихивать всё это в ядро и оттуда тягать. А то какой-нить ур... нагадит из юзера, что тогда?


Дата: Сен 19, 2004 22:18:48

пардон, кульная тема


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078