Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Добавление нового пункта меню + функциональность.
Посл.ответ Сообщение

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

Создано: 21 ноября 2006 09:17
· Личное сообщение · #1

Программа написана на дельфи и не пакована.
Resource Hacker полностью показывает все ресурсы.
Есть пара вопросов:
1. Как мне добавить в определённое меню свой пункт?
Просто прописать в ресурсах, сохранить и скомпилить в RH заново - не вышло. При запуске программы появляется окно о том, что файл повреждён.
2. Как присвоить ему (новому пункту меню) какую-нибудь функциональность?
А тут даже ничего предположить не могу. Помогите, пожалуйста, хотя бы с самым элементарным ShowMessage("hello moto");

Конкретно программа. ICQ клиент QIP: _http://www.qip.ru
Ссылка на скачивание: _http://download.qip.ru/qip7990.rar (1, 3 Mb)

PS. Хочу добавить в него некоторую функциональность лично для себя.




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

Создано: 21 ноября 2006 10:15
· Личное сообщение · #2

1)ищи проверку либо через брекпоинт на MessageBox, либо (если сообщение в другом модальном окне) через EnableWindow.
2)найди цикл обработки сообщений этого окна и пропатч его.



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

Создано: 21 ноября 2006 10:25
· Личное сообщение · #3

Сообщение появляется при самом запуске программы.
А по поводу второго пункта - "цикл обработки окна" что это за зверь?
Какие окна во втором пункте?

Я переформулирую вопрос: Есть меню, в него надо добавить новый пункт и присвоить ему некую функциональность, например, при клике на него показать сообщение: "hello moto";



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 21 ноября 2006 10:35
· Личное сообщение · #4

Надо в ресурсах заменить указатель на старую менюшку на свой. ИМХО.
Обычными инструментами это не зделаешь. Придётся писать свою прогу. Опять же имхо.

iddqd пишет:
цикл обработки окна

А с програмированием мы знакомы?

Если не очень, то первый пункт превращается в проблему. Про оконные процедура на Wasm за статьями Iczeliona.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 21 ноября 2006 10:42
· Личное сообщение · #5

Есть выход проще. Берешь ненужный пункт меню, например эбаут, и переделываешь на свой. Но код свой придется добавить все-таки. Причем, не имея исходников - в дизассемблере.



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

Создано: 21 ноября 2006 10:46
· Личное сообщение · #6

Дак вот я у старого пункта меню просто меняю кепчен и прога уже не запускается.



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

Создано: 21 ноября 2006 10:50
· Личное сообщение · #7

www.arteam.accessroot.com/ezine/index.php
здесь статьи и в том числе подробно расписана эта техника.Помоему в Arteam.ezine.number2



Ранг: 74.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 21 ноября 2006 11:19
· Личное сообщение · #8

iddqd
Слышал про CRC?




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 21 ноября 2006 11:34
· Личное сообщение · #9

человек видимо знаком только в delphi с vcl. глубже ничего не знает. отсюда вывод - попробуй для начала помочь себе сам. читай туторы icezilion'a как уже указали.

-----
Недостаточно только получить знания:надо найти им приложение




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 21 ноября 2006 12:08 · Поправил: Veliant
· Личное сообщение · #10


0064058C |. 68 52066400 PUSH qip_o.00640652
00640591 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00640594 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00640597 |. E8 70FFFFFF CALL qip_o.0064050C
0064059C |. 84C0 TEST AL,AL
0064059E |. 75 1D JNZ SHORT qip_o.006405BD
006405A0 |. 6A 00 PUSH 0
006405A2 |. B9 60066400 MOV ECX,qip_o.00640660 ; ASCII "Bad qip.exe file"
006405A7 |. BA 74066400 MOV EDX,qip_o.00640674 ; ASCII "Sorry, qip.exe file is corrupted."
006405AC |. A1 64DF6700 MOV EAX,DWORD PTR DS:[67DF64]
006405B1 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
006405B3 |. E8 3471E4FF CALL qip_o.004876EC

меняешь тут
0064059E |. 75 1D JNZ SHORT qip_o.006405BD
на
0064059E |. EB 1D JMP SHORT qip_o.006405BD


Я прост тоже немного модифицирую квип под себя с каждым релизом))



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

Создано: 21 ноября 2006 12:11
· Личное сообщение · #11

iddqd
Вот линка на Arteam ezine number 2
_http://www.arteam.accessroot.com/ezine/file_info/download1.php?file=A RTeam.eZine.Number2.rar
Там есть статья 1. Adding New Functionality to Old Software, Gabri3l of ARTeam - она тебе нужна

iddqd пишет:
Дак вот я у старого пункта меню просто меняю кепчен и прога уже не запускается.

Значит в программе есть проверка на целостность кода. Ищи ее и правь. После этого добавляй новую функциональность.



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 21 ноября 2006 13:17
· Личное сообщение · #12

stahh пишет:
Есть выход проще. Берешь ненужный пункт меню

Мог бы и сам догадаться

iddqd
А так ли надо менять надпись в меню. Может просто посмотреть где этот эбаут обрабатывается и там пропатчить переход на свою функцию. А надпись пусть старая остаётся.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 ноября 2006 21:47
· Личное сообщение · #13

1) Если чел спрашивает как вставить ShowMessage на клик меню, то он не только с асмом не знаком, он даже не знает что ShowMessage это нехилая обертка для создания и убивания модального окна, полностью на VCL.
2) Всвязи с пунктом №1, все ответы автоматом превращаются в флуд, и пока топикстартер не конкретизирует вопрос и не уточнит начальные знания просьба не флудить

-----
Yann Tiersen best and do not fuck




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 22 ноября 2006 08:41
· Личное сообщение · #14

Был бы квип на C написан былоб проще... не былоб стока мусора да и ресурсы нормальные были бы


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


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