Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как добавить свой элемент в интерфейс


Автор: Lunatikus 11.10.2007, 09:05
Здравствуйте.Скажите,возможно ли добавить,например кнопку и обработчик этого элемента в интерфейс сторонней программы,к коду которой доступ запрещен?Получается без того,чтобы делать это отдельным процессом не обойтись?Как тогда сделать его скрытым(чтобы не отображался в панели задач)?И как связаться вообще хотя бы с такими свойствами сторонней программы,как координаты окна?

Автор: Yanis 11.10.2007, 09:36
Возможно это что то даст: http://wasm.ru/article.php?article=addfunc
Советую ещё комментарии почитать…

Автор: Lunatikus 11.10.2007, 10:34
спасибо,но "выдирание" кода не совсем то,что я хотел.Хотя если других вариантов не будет,буду пробовать этот =)По-прежнему висит вопрос о получении визуальных параметров запущенной программы.Какими средствами это возможно,если возможно.Например,зная,координаты расположения и параметры окна проги,можно сделать отдельный модуль,отображающий кнопку в этом окне проги,но не связанный с ним.Я имею в виду псевдослияние со сторонней прогой.Чтобы пользователь видел на ней новые элементы,но не обязательно,чтобы они были в этой проге.

Автор: Alix 11.10.2007, 13:49
Возможно, поможет http://forum.vingrad.ru/forum/topic-69246.html

Автор: ivan219 11.10.2007, 14:35
А может эта программа плагины поддержевает???

Автор: Lunatikus 11.10.2007, 14:41
нет,мы ничего не знаем о сторонней программе,кроме ее интерфейса,вернее того,что видим перед собой при ее запуске.

Alix, спасибо,что обратил внимание на API-раздел.Буду разбираться,похоже на то,что мне надо.

Автор: Alix 11.10.2007, 14:51
Цитата(Lunatikus @  11.10.2007,  15:41 Найти цитируемый пост)

Alix, спасибо,что обратил внимание на API-раздел.Буду разбираться,похоже на то,что мне надо. 

возможно, скоро сделаю пример. вернее переработаю его для демонстрации.

Автор: Alix 11.10.2007, 18:26
Набросал небольшой пример, который подменяет кнопку равно у виндовского калькулятора. Меняет надпись на '<>' и при клике выводит приветствие smile Висит в бэкграунде, как только появляется окно калькулятора - заменяет у него кнопку на свою. Выйти из программы можно по горячим клавишам Ctrl+Alt+F10 (меняется в исходниках, если вдруг у вас уже висит что-то на это сочетание).
Была взята программа Rrader'а, я убрал все лишнее, заточил под calc.exe, отказался от отдельной *.dll для установки хуков (callback'ом хука программа ставит свою wndproc). Так что если вдруг захотите поставить мне плюс - в первую очередь поставьте ему.
Недоработок я в программе пока не замечаю (кроме той, что она не сможет работать если запущено 2 калькулятора, ведь кнопка то одна! хотя при большом желании можно сделать было и массив, но я для простоты кода не стал этого делать), быть может, разве что код стоило оформить покрасивее.

Небольшие пояснения по тому как работает программа. 
1. Создает свое окно
2. Создает кнопку, такую же по позиции, габаритам и стилю, что и в калькуляторе и оставляет ее на этом окне.
3. Регистрирует хук, в частности на создание/удаление окон
4. Как только создалось окно калькулятора, мы прячем старую кнопку равно, а нашей меняем родителя на окно калькулятора. Также меняем кнопке ее WndProc, чтобы можно было отловить клики по ней.
5. Как только окно калькулятора закрывается, мы возвращаем кнопку нашему окну и обратно меняем обработчик.

Вот и все...

Автор: Lunatikus 12.10.2007, 10:59
спасибо большое за огромную помощь  smile очень помог

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)