Наверняка этот вопрос, хоть раз, но уже задавался. Если что простите. Хотелось бы обращаться к сохраняемым данным окон не через очень длинные последовательности GetWindowLong / SetWindowLong, а именно непосредственно, по тому или иному смещению, скажем от HWND. То есть, что-то вроде следующего: Код (ASM): mov eax, HWND ... mov eax, dword ptr [eax + AnyOffset] ; eax = нужное значение Лично мне, в отладчике найти смещение не удалось – там слишком много операций. И уже, хотя бы по этой причине, это – очень серьезная расточительность. Собственно, в связи с этим об этом и задумался.
Peretyatkov, Очень странный вопрос. Что вы понимаете под последовательностями и смещениями ? Теневые обькты, те что связаны с GUI, реализованы частично в режиме пользователя. Сами обьеты и их базы данных храняться в ядре и для быстрой работы с обьектами эти данные отображаются на пользовательское пространство в виде очень запутанных структур. Там нет понятия смещений. Вычисление описателя это довольно хитрый и сложный механизм, большая часть данных связанных с обьектом это ядерные указатели, которые транслируются на пользовательские ссылки. По мойму вы запутались из за того, что у вас в уме смешалось всё, вы каким то образом отождествляете сложный и абстрактный обьект(теневой описатель) с обычной скрипт конструкцией(дереференс памяти, разыменование указателя). Обьект гуя не является структурой, на него нельзя ссылаться. Поймите что описатель это абстракция, это не есть указатель.
Да, я понимаю что HWND это не указатель, а всего лишь описатель. Но тем не менее - хотелось бы обращаться именно так. Так попросту было бы лучше.
Peretyatkov, Не вы разработали это, вы можите только изучить и использовать. Если вы хотите копаться во внутренностях обьектов, то вам нужно знать трансляции, как кернел обьекты отображаются на юзер память. Это сложный механизм. SHAREDINFO структура ключевая, часть ядра отображена(база данных) в юм. Ссылки на объекты вычисляются через эту память, как разница адресов, при этом есть куча проверок и выборок из вложенных структур. Зачем вам всё это, как вы хотите - не соответствует архитектуре.