Сейчас на форуме: tyns777, zombi-vadim, zds (+4 невидимых) |
eXeL@B —› Программирование —› Можно ли симитировать клик на конкретном поле в меню? |
Посл.ответ | Сообщение |
|
Создано: 03 июня 2013 04:15 · Личное сообщение · #1 Программа на делфи. Сам пишу на делфи. В Делфи есть возможность перенаправить щелчок на кнопке процедурой BtnXClick(sender), можно ли такое сделать из кода дизассемлированной программы? Т.е. мне фактически надо заменить в программе клик по одной кнопке, кликом по другой. Но вся сложность в том что пункт меню, щелчек по которой надо инициализировать создается динамически, процедуру обработку щелчка по всем подобным кнопкам я нашел (это кнопки плагинов и их много). Т.к. процедура обработки всех кнопок плагинов одна, мне надо имитировать нажатие именно той кнопки которая нужна, как будто бы человек щелкнул по ней мышкой, как это сделать? |
|
Создано: 03 июня 2013 08:48 · Поправил: Veliant · Личное сообщение · #2 |
|
Создано: 03 июня 2013 09:05 · Личное сообщение · #3 |
|
Создано: 03 июня 2013 09:10 · Личное сообщение · #4 |
|
Создано: 03 июня 2013 10:19 · Поправил: yarcom · Личное сообщение · #5 Dart Sergius пишет: Вызвать с нужными параметрами. Логично... Мог бы и сам догадаться... А можно чуть поподробнее. Я создал программку для примера с тремя кнопками. вот текст кнопку Которая по очереди посылает команды щелчков на первую и вторую кнопку. Можно чуть подробнее, что и за что тут отвечает? Откуда берутся адреса кнопок? И как мне найти в своей программе нужную? Code:
|
|
Создано: 03 июня 2013 10:46 · Личное сообщение · #6 |
|
Создано: 03 июня 2013 10:51 · Личное сообщение · #7 Hellspawn пишет: засунь подопытную прогу в IDR, Dede, может чего полезного выдадут. а вообще выкладывай софт. Это первое что я сделал. Вся проблема что кнопки меню создаются динамически и всем кнопкам вешается одна процедура исполнения. Отличия только в том, на какой именно кнопке идет щелчек, от этого, скорее всего по индексу кнопки идет пляска. Программу выложить не могу к сожалению. Она запускается только при наличии соответствующей БД и является гос.разработкой. Мне бы просто понять на словах как это делается... (имитация щелчков) |
|
Создано: 03 июня 2013 11:02 · Поправил: Dart Sergius · Личное сообщение · #8 брякаешься на функции обработчике, и смотришь что в стеке на вызовах. Как с одной кнопки, так и с другой. Ну и естественно надо посмотреть как она узнает что нажали. Мб надо будет кое-где подправить память чтобы она думала что нажали нужную кнопку. | Сообщение посчитали полезным: yarcom |
|
Создано: 03 июня 2013 11:20 · Личное сообщение · #9 Dart Sergius пишет: брякаешься на функции обработчике, и смотришь что в стеке на вызовах. Как с одной кнопки, так и с другой. хмм.. про стек забыл. Попробую. Спасибо. Dart Sergius пишет:Ну и естественно надо посмотреть как она узнает что нажали. Мб надо будет кое-где подправить память чтобы она думала что нажали нужную кнопку. А вот тут сложнее... Хотелось бы сделать все через битхак, т.е. статично. Но все больше убеждаюсь что это врядли получится... |
|
Создано: 03 июня 2013 11:24 · Личное сообщение · #10 |
|
Создано: 04 июня 2013 14:42 · Личное сообщение · #11 |
|
Создано: 06 июня 2013 18:42 · Поправил: tomac · Личное сообщение · #12 yarcom пишет: хмм.. про стек забыл. На этом месте подавился. В делфе, если мне не изменяет память, как один из аргументов события идет sender: TObject, который собственно и является тем объектом, который инициировал событие (в данном случае итем меню). Вот в нем что-то лежит. Что именно, определяется либо по имени, либо по индексу в каком-то списке, либо по tag'у (есть он там или нет, не помню). Вот и смотри, как этот параметр используется и как делается выбор, что же это за пункт меню. И не забывай про calling convention - в делфе - borland fastcall. |
eXeL@B —› Программирование —› Можно ли симитировать клик на конкретном поле в меню? |