Ребята, где почитать про PE-формат, но с примерами?

Тема в разделе "WASM.BEGINNERS", создана пользователем amvoz, 22 ноя 2008.

  1. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Пропатчи условный переход и дело с концом.
     
  2. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Шутку юмора оценил. А вот я вижу ты в стек кладёшь нулевым и третьим параметром (правильная формулировка?) стиль окна и дескриптор родительского окна, равные 0. Вот за это объяснение я был бы благодарен, а то у меня предположений никаких нет. Вернее есть на счёт первого- цифра определяет внешний вид окна. 0 один вид, 1- другой вид и так далее. А вот про дескриптор... Никаких предположений даже.
     
  3. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Хм... А это решение- какому альтернатива? Я никаких вопросов не ставлю, продолжаю заниматься, пытаюсь постичь слово "патчить" и "дескриптор родительского окна"...
     
  4. sp1k

    sp1k New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2007
    Сообщения:
    24
    Из MSDN:
     
  5. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    amvoz
    Первый параметр - хендл родительского окна, окно, к которому будет модальный MessageBox, в данном случае HWND_DESKTOP = 0, т.е. нет родителького окна. Последний параметр задает вид MessageBox'а (иконку, кнопки и пр.), в данном случае - MB_OK = 0, т.е. одна кнопка OK.
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    amvoz
    научись сначала messagebox программировать...

    а в точке входа нада забивать

    push 0
    call $+5+7+1
    db "caption",0
    call $+5+3+1
    db "msg",0
    push 0
    call [MessageBoxA]
    ret
     
  7. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Я ничего не понял, да, честно говоря, глубоко и не вникал. Просто некогда. Парни, если по-простому объяснить нельзя, не растрачивайте зря энергию. Придёт время, доберусь я до дескриптора родительского окна. Я думал, это просто, но ошибся.
    ...Не считать за провокацию, но я нет-нет, да и пытаюсь подойти вот с какой стороны: ставлю вопрос: а зачем нужно то, что называетсе дескриптором (хэндлом?) родительского окна? И не нахожу ответа. Стиль есть? Есть. Тексты есть. Есть. Что ещё надо? Видать надо что-то...
    Если будете объяснять людям, с которыми вы в хороших отношениях, попытайтесь с этой точки зрения объяснить. Обоснуйте, почему без первого параметра не будет нарисовано окна. Объясните его (параметра) роль и зачем он нужен.
    ...А главное, сделайте это на пальцах.
    Ну, а я пока сам. Пока такого вопроса не ставлю. И описание функций у меня есть.
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    у программистов Microsoft спроси, зачем когда они писали Windows, сделали так, что в функцию MessageBox, надо передавать хендл родительского окна.
     
  9. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    amvoz
    Насчёт дескрипторов задай себе вопрос, как определить обьект, окно, процесс и тд.
     
  10. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Вас послушать, так по-моему дескриптор лишнее. Но я так не думаю.
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    amvoz
    И правильно делаете. :)
    Хэндл окна - это уникальный идентификатор окна в системе. Вполне понятно, зачем он нужен: чтобы система и работающие под ней программы могли как-то различать окна (имена у окон могут быть одинаковые).
    Чтобы как-то структурировать окна, а не делать из них неупорядоченную кучу объектов, Microsoft ввели отношения между окнами: owner (владеющее окно) <-> owned (владеемое окно), а также parent (родительское) <-> child (дочернее). Эти отношения позволяют представить структуру окон в виде дерева и внести некоторый порядок в их организацию.
    Очевидно, что message box также является окном. Поэтому Microsoft позволяет (но не заставляет) по желанию программиста указать окно-owner для окна message box. Если программист не хочет, чтобы message box был owned по отношению к какому-нибудь окну, первым параметром функции MessageBox нужно указать нуль.
     
  12. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    шла 3я страница...
     
  13. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Ага. Идентификатор. Ну это я ещё соображал. Но зачем присваивать дескриптор (не какой-то там произвольный номер или имя) некоего окна, называемого родительским... А вот зачем. Коль скоро у них будут одинаковые идентификаторы, то, например, при закрытии родительского (к нему обратятся по дескриптору) будет закрыто и дочернее (дескриптор-то тот же самый) Коряво, конечно, но что-то такое. Примеры сплошь и рядом. Закрываем одно окно- закрывается другое. Уф... Не судите строго и большое спасибо.
    ...То же, наверное и с потоками и процессами. Я и там и сям слышал- родительский процесс, дочерний процесс, наследование... Ну правильно. Бывает же: закрыватся программа- должна закрыться и программа, котрую она вызвала. (Закрываем cmd c открытым hiew Всё верно. cmd- родительский процесс, hiew- дочерний. Вот пример).
    ...Хотя и не всегда, получается, дочерний процесс наследует дескриптор родительского.
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    amvoz
    все не то...
    Дескриптор родительского окна нужен, чтобы винда знала к какому окну делать модальным MessageBox. Модальным - значит родительское окно становится неактивным и пользовательский ввод в него блокируется, пока пользователь не закроет MessageBox.
     
  15. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    еще там вроде иконка наследуется...
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    K10
    Не родительского, а именно owner-окна.
    amvoz
    Что практически всё неверно K10 уже написал.
    Вы невнимательно читаете.
    Уникальный означает, что ни у одного другого окна не может быть такого же идентификатора.

    А вообще перестаньте задавать вопросы, и читайте статьи. В частности Уроки Iczelion'а. Ответы на вопросы сами придут.
     
  17. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Так я ведь это побочно. Мне пишут, не могу же я не откликнуться. Вот и Вы написали- сделать вид что понял, так это нечестно будет. А так-то конечно, пока вопросов нет.