|
|
| Посл.отвђт | Сообщен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 будет тебе сайс. У меня так вся винда настроена - в досе, кажется, так же можно. Я уж не помню - давно это было.. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067 |