Нужно разблокировать пункт меню.

Тема в разделе "WASM.RESEARCH", создана пользователем St01en, 21 дек 2006.

  1. St01en

    St01en New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2006
    Сообщения:
    12
    Чо уже тока не пробовал. Прога на делфи+vcl. На стандартные фишки ловиться только сам менюбар. А как создаются пункты - понять не могу. И где передается параметр на вкл - выкл, тоже не могу въехать. Вот то, что нашел, но в какую сторону копать - хз.
    Breakpoints
    Address Module Active Disassembly Comment
    004083AC unpacked Always PUSH EBP hMenu
    00464690 unpacked Always PUSH EBP @Controls@TWinControl@IsMenuKey???
    004708EC unpacked Always PUSH EBP @Menus@TMenuActionLink@IsEnabledLinked
    00470918 unpacked Always PUSH EBP @Menus@TMenuActionLink@SetEnabled
    00470C18 unpacked Always PUSH EBP @Menus@TMenuItem@Create
    00470CB8 unpacked Always PUSH EBP Menu
    00470D4C unpacked Always PUSH EBP MenuItemInfo
    00470F30 unpacked Always PUSH EBP @Menus@TMenuItem@Loaded
    00471800 unpacked Always PUSH EBP LMenu
    00472CC0 unpacked Always PUSH EBP @Menus@TMenuItem@GetAction
    00472DF4 unpacked Always PUSH EBP @Menus@TMenuItem@SetVisible
    00472EA4 unpacked Always PUSH EBP @Menus@TMenuItem@GetMenuIndex
    00473138 unpacked Always PUSH EBP @Menus@TMenuItem@SetDefault
    00473170 unpacked Always PUSH EBP @Menus@TMenuItem@InitiateAction
    004734A4 unpacked Always PUSH EBP @Menus@TMenuItem@SetAction
    00473548 unpacked Always PUSH EBP @Menus@TMenuItem@InitiateActions
    00476944 unpacked Always PUSH EBP @Menus@TAdvancedMenuDrawItemEvent
    00476A20 unpacked Always PUSH EBP @Menus@TMenuMeasureItemEvent
    0047D7D4 unpacked Always PUSH EBP @Forms@TCustomForm@SetObjectMenuItem
    0047D83C unpacked Always PUSH EBP @Forms@TCustomForm@SetWindowMenu
    0047EADC unpacked Always PUSH EBP @Forms@TCustomForm@MergeMenu
    0047F990 unpacked Always PUSH EBP @Forms@TCustomForm@WMEnterMenuLoop
    00499650 unpacked Always PUSH EBP AMenu
    004D2B78 unpacked Always PUSH ESI @Te_forms@TTeMenuBar@GetChildren
    004D7FF8 unpacked Always PUSH EBP AIsMenuBar
    004DA554 unpacked Always PUSH EBX DefaultMenuOptions
    Проги, которые вроде должны видеть пункты - видят тока сам TTeMenuBar. С ним можно делать все, что угодно, хоть в бублик свернуть. А вот пункты - не могу поймать. Чота - не догоняю.
     
  2. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    а ресурсы не пробовал править?
     
  3. St01en

    St01en New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2006
    Сообщения:
    12
    Да нет ничо в ресурсах. Я думаю, там не выставляются свойства напрямую, а идут через проверку. Так вот, может кто уже ковырял vcl, какая из этих либ может вывести на нужную проверку?
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    nobodyzzz
    Delphi редко хранит ресурсы в диалогах.
    St01en
    Поставь бряк на SetMenuItemInfo.
     
  5. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    St01en
    Можешь прогу бросить на slil.ru? Я ее своей программой проанализирую.
     
  6. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Свойство называются TMenuItem.Enabled, метод - TMenuItem.SetEnabled(Value:Boolean) соответственно. Ковырять диалоги Delphi по 7 верию включительно можно в Restorator'е 2006. Только это... Кроме MenuItem'ов есть еще и Action'ы, которые могут быть с ними связаны. Если TAction.Enabled=False, то пункт меню, к которому этот action привязан, отключается автомитически.
     
  7. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    CyberManiac
    Ну, пункты меню могут создаваться где угодно, в любом месте кода, в зависимости от ситуации и, например, лицензионных прав на продукт. А в других местах они включаются и выключаются. Программу надо смотреть, здесь общими советами не ограничишься.
     
  8. St01en

    St01en New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2006
    Сообщения:
    12
    crypto
    Прога большая, не залью. Согласен с тобой. Все, что CyberManiac говорит, естественно пробовал. Да и Sign 0f Misery юзал. Не находит пункты меню. Даже те, что включены. Я уже трейсил ф-ции которые хоть как-то отвечают за меню. Единственное, что вызывает хоть какой-то намек, это вот такое сочетание
    Breakpoints

    0045B01B unpacked Always CALL unpacked.@Controls@TControlActionLink@SetEnabled

    0045B154 unpacked Always PUSH EBP @Controls@TControlActionLink@SetEnabled

    0045B189 unpacked Always CALL unpacked.@Windows@SetMenuItemInfo
    По идее - последний колл должен устанавливать свойства, но в user32 параметры никакие не передаются. Сама ф-ция имеет такой вид
    0045B154 >/$ 55 PUSH EBP ; @Controls@TControlActionLink@SetEnabled
    0045B155 |. 8BEC MOV EBP, ESP
    0045B157 |. 51 PUSH ECX
    0045B158 |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
    0045B15B |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
    0045B15E |. 8378 5C 00 CMP DWORD PTR DS:[EAX+5C], 0
    0045B162 |. 74 32 JE SHORT unpacked.0045B196
    0045B164 |. 33D2 XOR EDX, EDX ; ntdll.KiFastSystemCallRet
    0045B166 |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
    0045B169 |. E8 1A35FDFF CALL unpacked.@Graphics@InvalidGraphi>
    0045B16E |. 8B55 FC MOV EDX, DWORD PTR SS:[EBP-4]
    0045B171 |. A1 9C1B5E00 MOV EAX, DWORD PTR DS:[5E1B9C]
    0045B176 |. E8 F91AFCFF CALL unpacked.Filer
    0045B17B |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
    0045B17E |. 8B40 5C MOV EAX, DWORD PTR DS:[EAX+5C]
    0045B181 |. 50 PUSH EAX
    0045B182 |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
    0045B185 |. 8B40 60 MOV EAX, DWORD PTR DS:[EAX+60]
    0045B188 |. 50 PUSH EAX здесь всегда число вида 0E17DE02 - вроде это и должно включать ?????

    0045B189 |. E8 8ECFFAFF CALL unpacked.@Windows@SetMenuItemInf>; Вот этот колл?

    0045B18E |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
    0045B191 |. 33D2 XOR EDX, EDX ; ntdll.KiFastSystemCallRet
    0045B193 |. 8950 5C MOV DWORD PTR DS:[EAX+5C], EDX ; ntdll.KiFastSystemCallRet
    0045B196 |> 59 POP ECX ; kernel32.7C816D4F
    0045B197 |. 5D POP EBP ; kernel32.7C816D4F
    0045B198 \. C3 RETN
     
  9. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    St01en
    По своему опыту знаю, код, который обычно приводится, ни о чем не говорит. Мне только исполняемый файл и нужен (если он не упакован), сожми в архив. Программа не может быть слишком большой, чтобы ее нельзя было слить.
     
  10. St01en

    St01en New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2006
    Сообщения:
    12
    Вот чота там намучено. Вот после этой ф-ции включается кнопка
    @Controls@TWinControl@IsMenuKey ??? Мдя, возможно аффтар переименовал ф-ции. Тогда -Ж.
     
  11. atorn

    atorn New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2006
    Сообщения:
    64
    Ты должен был знать, что Sign 0f Misery не может находить подобные вещи. В ней функция поиска окон не работает. На сайте программы всё подробно описано. Используй новую версию(она немного не так называется) или создай свою для поиска handle'a menu и submenu.
     
  12. St01en

    St01en New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2006
    Сообщения:
    12
    crypto
    Пробовал раза 3 залить - рвется связь. Да оно и не надо. Аффтар переименовал ф-ции. Я перевесил их на другой пункт, посмотрел, чо откуда. Напр. "Настройки" называется @Main@LoadSchedule. Ну и самое хреновое, настройки не сохраняются. Короче - демка. Еслиб чот попроще, можно былоб вставить ф-йию сохранения. Но там настроек штук 30. Посмотрю исчо, мож чо получиться.

    Тему можно закрыть.