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

 WASM Phorum —› WASM.WIN32 —› Поделитесь информацией !

. 1 . 2 . >>

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


Дата: Апр 18, 2004 16:31:35

Что бы создать окно мы должны заполнить структура wndclassex и вызвать call registerclassEx. Куда ? Помещается эта информация об окне? Пока это приложение будет работать пользователь может запустить еще одно, тут тоже заполнение, регистрация, а куда записывается это информация об окне? Как вообще работает registerclassEx API?
Что внутри него каков его исходник и как его получить?

+P.S.: Прошу сильно не ругать,если кто-то видить провокация, т.к. у меня и в мыслях такого не было за кодинг под винду сел не давно и в Iczelion`е ни чего не вижу кроме заполни А, вызови Б, зарегистрируй В и получишь Банан !!! А вот сами процессы он не описывает.
Спасибо тем кто откликнется!


Дата: Апр 19, 2004 05:10:23

EvilsInterrupt
Что внутри него каков его исходник и как его получить?
Дизассемблировать соответствующую DLL'ку.


Дата: Апр 19, 2004 11:02:42

2EvilsInterrupt:
если я ничего не путаю, то информация об окне храниться в дебрях винды, это сделано для трех целей (опять же - это я так себе вижу, а уж как там оно на самом деле...):

1) не надо с собой таскать довольно большую структуру, а достаточно работать с хендлом окна.

2) допустим у тебя есть какое-то особенное окно, и таких окон тебе надо в программе штук пять, ты один раз регистрируешь класс окна, а дальше просто создаёшь окна такого класса. этим часто пользуются создавая окна типа BUTTON, EDIT, LISTBOX...

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


Дата: Апр 19, 2004 11:50:40

Товарищь а вот где какая таблица, как в досе при открытии файлов или где ...
В досе вот открываешь файл используя asc2 зеро тебе дают хендл, дос заносит во внутреннею таблицу место на диске и место в ОЗУ и дает номер, это номер и служит дискриптором, хендлом, описателем да хоть как его назови суть то?
Иль думаешь я не прав?
А вот как с классами в Винде?


Дата: Апр 19, 2004 13:29:38 · Поправил: S_T_A_S_

[ EvilsInterrupt : каков его исходник и как его получить? ]

Про исходники виндоса были темы на форуме
Официально такой информации нет. Это все недокументировано и различается для разных версий.

Что происходит при создании самых простых объектов gdi, можно посмотреть прогой отсюда
Это не совсем в тему, просто чтоб представление о вопросе получить.


[ q_q : Дизассемблировать соответствующую DLL'ку. ]
Отличная шутка, 2Mb %)


Дата: Апр 19, 2004 14:07:10 · Поправил: Four-F

[ EvilsInterrupt: Товарищь а вот где какая таблица,.. ]

Есть такая программа, SoftICE называется. Есть такая команда class.
Вот смотри, как я её пользую.
:addr explorer

; переключаемя в контекст, например, эксплорера.

:class

; сиотрим какие у него классы окон.

Class Name                Handle            Module      Wndw Proc Styles
------------------------------Application Private-------------------------------
SysDragImage              A035E238          shell32     A00149B0  00000000
Auto-Suggest Dropdown     A034F0D0          browseui    76DC4C01  00000000
CabinetWClass             A03453C8          browseui    76DC9B01  00002000
. . .
ComboBox                  A0326BF0          user32      77E1FE35  0000408B
Button                    A0326B78          user32      77E1C25E  0000408B
Message                   A0326B00          win32k      A00149B0  00000000
DDEMLEvent                A0326A80          win32k      A003C9AC  00000000
#32772 (IconTitle)        A0326A10          win32k      A00149B0  00000000
#32774                    A03269A0          win32k      A00AF8E6  00000808
ScrollBar                 A0326920          win32k      A006BFA0  0000008B
#32768 (PopupMenu)        A03268B0          win32k      A0055619  00000808
#32771 (SwitchWindow)     A0326840          win32k      A006408E  00000803
#32769 (Desktop)          A03267D0          win32k      A006E880  00000008

; Выбираем, например, кнопку и смотрим её подробнее.

:class -x Button
CLASS   Global      Button
    Handle          : A0326B78
    Next            : A0326B00
    Atom            : C017
    Wndw Count      : 0080
    Styles          : VREDRAW | HREDRAW | DBLCLKS | PARENTDC | GLOBALCLASS
    Module          : user32 (77E10000)
    Wndw Proc       : 77E1C25E
    Class Name *    : Button (A0326BD8)

; делаем дамп структуры объекта.

:dd A0326B78 l 100
0010:A0326B78 A0326B00  029FC017  8149F678  00000000      .k2.....x.I.....
0010:A0326B88 00800000  00000000  00000000  00000000      ................
0010:A0326B98 A0326B78  00000000  00000007  0000408B      xk2..........@..
0010:A0326BA8 77E1C25E  00000000  00000004  77E10000      ^..w...........w
0010:A0326BB8 00000000  E2480808  00000000  00000000      ......H.........
0010:A0326BC8 A0326BD8  00000000  000C0003  000B0100      .k2.............
0010:A0326BD8 74747542  00006E6F  00000000  00000000      Button..........


В данном случае, то что ты ищешь расположено по адресу A0326B78. А таблица, которую ты ищешь называется таблицей хендлов.

На http://www.smidgeonsoft.com/ есть тулза NtObjects.


Дата: Апр 19, 2004 14:34:29

2EvilsInterrupt:
тогда я не понял чего ты ищешь! тебе нужно где таблица? ну я и сказал - гдето в недрах винды, точнее в ОЗУ. тебе нужны конкретные адресса и структура таблицы? - дизасми дллки - только зачем тебе это?


Дата: Апр 19, 2004 15:33:44

Все вот тут про SoftIce, а я блин уж раза три пытался установить и не фига, есть ли где подробная установка с освещением всех возможных трудностей.


Дата: Апр 19, 2004 16:55:42

Ага, и мне! А то я поставил и... винда умерла. :)


Дата: Апр 19, 2004 17:38:30

С горем по полам под 98 сумел сделать установку но вовремя сего процесса смотрел в инфу pdp в акробате систему перезапустил, а это документ уже не запускается да и другие тоже это что выходит Айс глушит проги во время установки?


Дата: Апр 19, 2004 18:30:42

Нет. Просто акробат, точнее один из его плагинов, сечет айс и отказывается грузиться. Ищи по форуму, было про это.


Дата: Апр 19, 2004 19:55:56

Долго голову не бил переустановил

Исчо раз по Сайсу.
Допстим мы находимся в Ms-dos ежели мы наберем
в командухе Win то запустится Винда. А как мне
сделать что бы одной командой запускалса Сайс?
Куда внести изменения.
Для справки Сайс установил в C:\SoftIce.


Дата: Апр 19, 2004 22:33:04

Исключительно по память, так что могу ошибиться.
Прописываешь к себе в autoexec.bat такую строку:
C:\SoftIce\winice
Вроде так. У меня 9х под рукой нет. Смотри доку, там должно быть написано.


Дата: Апр 19, 2004 23:30:34

Срока стоит то, но блин я поставил туда перед ней
c:\nc\nc.exe Чтобы если что ли Винду ли Сайс запустить, как бы сказать выбор был. Но постоянно в папку Сайс залезать, что не прет поэтому хотелось бы одной командой, что-нить:
SoftIce и жмешь Enter вот тебе и сайс.


Дата: Апр 20, 2004 09:37:59

Ну дык пропиши в автоекзеке:
path=c:\SoftIce\
а потом запускай! Я бы еще батник сделал:
start SoftIce.exe
и обозвал его si.bat.
Тады по команде si будет тебе сайс. У меня так вся винда настроена - в досе, кажется, так же можно. Я уж не помню - давно это было..

. 1 . 2 . >>


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