Сейчас на форуме: vsv1, _MBK_, ut2004 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Как включить пункт меню?
Посл.ответ Сообщение

Ранг: 11.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 23 февраля 2007 18:48
· Личное сообщение · #1

Есть прога, нам по нажатию в тулбаре вылезает попап меню и в нем один пункт отключен.
Как бы мне его включить? Пробовал sign of misery но так и не понял что сделать чтобы он опознал
этот пункт меню. И скриптом мышку на нег нвыодил и найти меню по тексту пробовал - или не находит
или инвалид меню. Может подскажет кто что?



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 23 февраля 2007 21:58
· Личное сообщение · #2

А поиск вообще пробовал?
www.firststeps.ru/mfc/winapi/menu/r.php?67
Качай эту утилитку:
www.yandex.ru/yandsearch?rpt=rad&text=EnBtn.exe
Уж хотя бы здесь на краклабе поискал.

-----
Всем привет, я вернулся




Ранг: 11.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 24 февраля 2007 03:38
· Личное сообщение · #3

Спасибо за помошь. Поисковик использовать пробовал. Не помогло. За EnBnt спасибо, но в данном случае не помогает. Суде по тому что он пишет он вообще там пункты меню не различает.
Основная проблема в том что меню высплывающее - и пока оно не всплывет искать его бесполезно.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 24 февраля 2007 03:40
· Личное сообщение · #4

Брякайся на EnableMenuItem



Ранг: 31.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 26 февраля 2007 10:21
· Личное сообщение · #5

Нашол крякмес по теме. Собсно нада кнопочку активировать. Брякаюсь на EnableMenuItem. Попадаю на такой участок кода:
0044C626 8B45 08 mov eax, [ebp+8]
0044C629 8B40 FC mov eax, [eax-4]
0044C62C F680 28020000 0>test byte ptr [eax+228], 2
0044C633 75 0D jnz short 0044C642
0044C635 6A 01 push 1
0044C637 68 20F00000 push 0F020
0044C63C 53 push ebx
0044C63D E8 9E9EFBFF call <jmp.&user32.EnableMenuItem>
0044C642 8B45 08 mov eax, [ebp+8]
0044C645 8B40 FC mov eax, [eax-4]
0044C648 F680 28020000 0>test byte ptr [eax+228], 4
0044C64F 75 0D jnz short 0044C65E
0044C651 6A 01 push 1
0044C653 68 30F00000 push 0F030
0044C658 53 push ebx
0044C659 E8 829EFBFF call <jmp.&user32.EnableMenuItem>
0044C65E 5B pop ebx
0044C65F 5D pop ebp
0044C660 C3 retn
Мне подумалось что нужно тут 0044C633 либо тут 0044C64F jnz на je переправить и вместо push 1 и push 0F030 напесать push 0, тогда кнопка получит флаг ENABLED. Так и сделал. Только в итоге нихренась не получилось ибо кнопка всеравно оказалась Disabled. Вот скажие - что я делаю не так?
Сам Крякмес можно взять тут --> slil.ru/23996692




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 26 февраля 2007 10:52
· Личное сообщение · #6

BOOL EnableMenuItem(
HMENU hMenu, // handle to menu
UINT uIDEnableItem, // menu item to update
UINT uEnable // options
);

Если у тебя uEnable == 1, то элемент включается. Скорее всего это не то место, сравни uIDEnableItem с идентификатором отключенного элемента меню и поищи эту константу по коду.



Ранг: 9.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 марта 2007 03:16
· Личное сообщение · #7

После распаковки я пробывал так:

в WINHEXе по адресу 000707FC(XPButton2 enabled) правишь 08 на 09 и кнопка включается,
но тока дальit косяк какойто такой
Access violation at address 0045618E in module 'cmfl#2__2.exe'. Read of address 00000305.
По адресу 0007076B TXPEdit.Enabled правил 08 на 09.
И еще таймер не даёт вводить. Правил интервал (может не так надо) по адресу 000708EB с 64 на F4 и стало вводить.



Ранг: 20.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 марта 2007 04:06
· Личное сообщение · #8

По-мщуму я как-то ломал этот крякмис(с сайта M!H@N'a?) - офигенно глючный, правда может я чего не понял, но когда после enable всего, что надо, нажимаешь зарегистрировать там в обработчике походу идут asm вставки и регистры после них не восстанавливаются, и при попытке обращения к контролу - access violation, причём enable без патча фиг сделаешь, т.к. там delphi.




Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 09 марта 2007 07:54
· Личное сообщение · #9

Player пришет:
т.к. там delphi.

Я чего-то не понимаю.... А разница какая?

-----
Уважайте других и пишите грамотно.




Ранг: 31.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 10 марта 2007 05:31
· Личное сообщение · #10

Я вот пробовал через Ресторатор. Нашол строки
object XPButton2: TXPButton
Left = 8
Top = 64
Width = 57
Caption = 'Проверка'
Enabled = False
OnClick = XPButton2Click
end
и
object Edit1: TXPEdit
Left = 8
Top = 24
Width = 185
Height = 19
Enabled = False
Text = 'Активируйте кнопку "Проверка"'
end

False на True поменял, таймер не мешает, а ошибка та же - Access violation at address 0045618E in module 'cmfl#2__2.exe'. Read of address 00000305. Я вообще сначала подумывал что неправильно распаковал, а тут оказываецц0 его нормально отломать нельзя? Типа сам доделай и сломай?
зы. Спасибы за ответы.
ззы. Крякмес именно с сайта M!H@N'a.




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 11 марта 2007 04:59
· Личное сообщение · #11

jara
Кстати.
Если sign of misery непонятно, используй INQSoft WinScanner, там всё гораздо проще.
Просто выбираешь нужный элемент мышакой и активируешь.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 20.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 15 марта 2007 11:58
· Личное сообщение · #12

Executioner пишет:
Я чего-то не понимаю.... А разница какая?

Это я ступил , просто там кнопка - custom control'ная и ей чихать на всякие EnableWindow, нужно вызывать её родной Enable, или патчить ресурсы.


 eXeL@B —› Вопросы новичков —› Как включить пункт меню?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати