Страница: 1 |
Страница: 1 |
Вопрос: Имеем чужое приложение
Добавлено: 25.08.06 22:31
Автор вопроса: yxaxa
Стало интересно можно ли из своей программы воздействовать на чужое приложение, ну например всунуть куда нить в него кнопку и сделать чтоб по нажатию какой нить код выполнялся?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #1
Добавлено: 26.08.06 02:06
Хуки,хуки и ещё раз хуки
Номер ответа: 2
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #2
Добавлено: 26.08.06 07:38
Название темы - <no comments>
Номер ответа: 3
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #3
Добавлено: 26.08.06 07:40
Вариант (обходной, правда, тупой) - создаешь форму без загаловка, кидешь на него контролы, апишками зыришь все окна и их названия, находишь нужное окно, апишками узнаешь его координаты и размер, перемещаешь туда свою форму. Еще надо, чтоб форма была ShowInTaskBar = False и поверх все окон ее сделать
Номер ответа: 4
Автор ответа:
yxaxa
Вопросов: 31
Ответов: 25
Профиль | | #4
Добавлено: 26.08.06 11:00
Про хуки мона подробнее?
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 26.08.06 15:10
Я подсовывал ему свои кнопки через SetParent - просто, эффективно, но глючно немного
Номер ответа: 6
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #6
Добавлено: 26.08.06 17:34
Делаешь библиотеку. В ней делаешь обработку окна - получение хэндла окна, в которое надо вставить кнопку. Подменяешь функцию окна через GetWindowLong SetWindowLong, в новой процедуре обрабатываешь только свою кнопку, остальное передаёшь функции DefWindowProc. Далее CretaeWindow и создаёшь баттон. Теперь днлаешь загрузку библы в процесс окна и дело в шляпе
Номер ответа: 7
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #7
Добавлено: 26.08.06 17:36
Библиотеку можешь грузить или через SetWindowsHook или с помощью CreateRemoteThread ну или чкпрез GetThreadContext SetThreadContext
Номер ответа: 8
Автор ответа:
K&M
ICQ: 225442067
Вопросов: 20
Ответов: 170
Профиль | | #8
Добавлено: 26.08.06 19:24
У любого процесса (System.Diagnostics.Process) есть Handle главного окна (не помню правда в корне класса или в MainModule), если окон нет он равен 0, если есть, через него можно многое сделать...
Номер ответа: 9
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #9
Добавлено: 26.08.06 19:53
Тема вопроса зачётная кстати... как этот феномен назовём? Софтофилия? гы...
Номер ответа: 10
Автор ответа:
yxaxa
Вопросов: 31
Ответов: 25
Профиль | | #10
Добавлено: 26.08.06 20:59
я конечно пробану разобраться, но если не получится (я ж такого никогда не делал и эти функции впервые вижу), не затруднит написать пару строк кода в пример?
Номер ответа: 11
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #11
Добавлено: 26.08.06 21:51
Если не знаешь, что такое функция окна (обработчик которая), можешь смело не париться и учить мат часть. Помочь не удастся кодом, ибо ты не поймёшь, как это работает и придётся писать целиком всё. Настоящую библу в ВБ не написать. Так что придётся использовать или C++(мне ближе всего) или что-нить ещё(это для SetWindowsHook). Для CreateRemoteThread достаточно будет знать адрес LoadLibrary, для SetThreadConstext байткод LoadLibrary (Path);
На ВБ либы не писал, но есть подозрение что проще будет использовать C и не париться. Дельфи отвергаю как отстой невиданного уровня.