Чо уже тока не пробовал. Прога на делфи+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. С ним можно делать все, что угодно, хоть в бублик свернуть. А вот пункты - не могу поймать. Чота - не догоняю.
Да нет ничо в ресурсах. Я думаю, там не выставляются свойства напрямую, а идут через проверку. Так вот, может кто уже ковырял vcl, какая из этих либ может вывести на нужную проверку?
Свойство называются TMenuItem.Enabled, метод - TMenuItem.SetEnabled(Value:Boolean) соответственно. Ковырять диалоги Delphi по 7 верию включительно можно в Restorator'е 2006. Только это... Кроме MenuItem'ов есть еще и Action'ы, которые могут быть с ними связаны. Если TAction.Enabled=False, то пункт меню, к которому этот action привязан, отключается автомитически.
CyberManiac Ну, пункты меню могут создаваться где угодно, в любом месте кода, в зависимости от ситуации и, например, лицензионных прав на продукт. А в других местах они включаются и выключаются. Программу надо смотреть, здесь общими советами не ограничишься.
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
St01en По своему опыту знаю, код, который обычно приводится, ни о чем не говорит. Мне только исполняемый файл и нужен (если он не упакован), сожми в архив. Программа не может быть слишком большой, чтобы ее нельзя было слить.
Вот чота там намучено. Вот после этой ф-ции включается кнопка @Controls@TWinControl@IsMenuKey ??? Мдя, возможно аффтар переименовал ф-ции. Тогда -Ж.
Ты должен был знать, что Sign 0f Misery не может находить подобные вещи. В ней функция поиска окон не работает. На сайте программы всё подробно описано. Используй новую версию(она немного не так называется) или создай свою для поиска handle'a menu и submenu.
crypto Пробовал раза 3 залить - рвется связь. Да оно и не надо. Аффтар переименовал ф-ции. Я перевесил их на другой пункт, посмотрел, чо откуда. Напр. "Настройки" называется @Main@LoadSchedule. Ну и самое хреновое, настройки не сохраняются. Короче - демка. Еслиб чот попроще, можно былоб вставить ф-йию сохранения. Но там настроек штук 30. Посмотрю исчо, мож чо получиться. Тему можно закрыть.