![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Приветствую уважаемые! Помогите самоучке решить сложную задачу. Заранее спасибо!
Есть программа с постоянным именем процесса. Заголовок окна всегда постоянный. На нем есть: ComboBox, много Static, 2х Edit и 2 кнопки с постоянным заголовком. Задача: Наша программа висит просто в памяти возможно свернутая (не активно окно). Когда в чужой программе нажимается кнопка с текстом "Продолжить" то значение в первом эдите меняется на нужное нам; программно мышка кликает на одно из Static и после этого уже эти данные передаются дальше. Основная сложность в том что хендлы в чужой программе каждого элемента меняются. Возможно поможет то что статик по которому нужно кликнуть всегда начинается с "Привет:" а в эдите всегда присутствует первым символ либо "х", либо "у", либо "0" и следующий набор символов постоянный вернее не постоянный а постоянно их кол-во. Находить кнопки и нажимать их, ставить галочки итп я смог, а вот тут проблема. Если без использования DLL будет вообще супер. Один раз отлавливал нажатия клавиш не хуком а таймером - и код меньше и понравилось больше ;). Возможно ещё поможет то что нам известны размеры элементов и они все разные. Очень прошу не помидоров а помощи. Это сообщение отредактировал(а) Twiddle - 13.7.2009, 03:34 |
|||
|
||||
niteo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.11.2006 Где: Брянск Репутация: нет Всего: 1 |
Пробуй Субклассинг использовать.
--------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй... |
|||
|
||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
![]() Спасибо. Так, прозрение: а что если при появлении родительского окна (ловим по заголовку), отслеживаем нажатие на кнопку (постоянный заголовок у неё), как кнопка нажата успеваем в темп или буффер как правильно называется не знаю уж простите,загружаем все заголовки всех дочерних окон, ищем в этом по маскам нужное нам ("Привет:*" и "Х????????????") у найденого узнаем хендл, меняем в этих эдитах содержимое на то что нужно нам и собственно все готово. Только два вопроса: как реализовать и желательно без DLL и будет ли успевать все подменяться. Это сообщение отредактировал(а) Twiddle - 13.7.2009, 18:46 |
|||
|
||||
niteo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.11.2006 Где: Брянск Репутация: нет Всего: 1 |
Это про Субклассинг для своего окна
http://forum.vingrad.ru/forum/topic-69246.html Гдето в этой же ветке было и про инжект в чужой процесс. Без использования DLL Добавлено через 3 минуты и 37 секунд Почему хук не юзаешь? Удобная весчь, проще субклассинка с инжектом. Вообще субклассинг нужно юзать для более "глобальных" вещей. Для всего остального сойдут и хуки. --------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй... |
|||
|
||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Хук боюсь использовать потому что многие антивирусы будут ругаться, не хочется каждый раз выключать АнтиВирус.
|
|||
|
||||
niteo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.11.2006 Где: Брянск Репутация: нет Всего: 1 |
У меня ни НОД ни Каспер не ругаются. Они не могут на сам ХУК ругаться. Они ругаются только на КОД. ХУК это стандартнай виндовый инструмент.
--------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй... |
|||
|
||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Ну допустим будет хук. Это только пол беды. Основная беда в том что нам надо при нажатии кнопки заменть значения эдитов а определить хендл этих эдитов что бы это сделать у меня не получается т.к. там не постоянный заголовок, вернее постояннен только первый символ и общее кол-во. , а по классу не получается т.к. на форме чужой программы много объектов одного класса. =( Второй день уже одержим идеей, читаю вес мануалы, сейчас штрудирую форум, нашел много интерсеного но нужного пока пшик.. =(
|
|||
|
||||
niteo |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.11.2006 Где: Брянск Репутация: нет Всего: 1 |
FindWindow
SetWindowsHookEx
EnumChildWindows Этого будет достаточно ;) В EnumChildWindows заодно и значения будешь в Edit-ах менять Это сообщение отредактировал(а) niteo - 13.7.2009, 19:24 --------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй... |
||||||
|
|||||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Нашел вот такой вот код может кому то же полезно будет.
Осталось только додумать как сделать что бы значения менялись в нужном эдите, а не всех подряд. Чувствую хук и поиск по части заголовка нужного хендла для меня самым сложным будет. =( |
|||
|
||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Вот один человек за что ему спасибо подсказал как сделать, но мой мозг не может это превратить в код. Помогите пожалуйста, с меня пиво.
и про хук нужной нам кнопки в нужном окне, хендл кнопки и окна находиться без проблем. Заранее спасибо. |
|||
|
||||
niteo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.11.2006 Где: Брянск Репутация: нет Всего: 1 |
Блин, посмотри в DRKB. Там примеров по такой же теме полно. есть на 90% такие как тебе надо.
Все просто. Берешь ЧУЖОЕ окно. Ставишь на контрол ХУК. На каждое отрабатываение события, пробегаешься в цикле по УЖЕ ОТОБРАННЫМ контролам (Отобрать можешь их в EnumChildWindows, там в рекурсии отберешь какие надо контролы) ![]() --------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй... |
|||
|
||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Ладно с хуком потом, не могу понять в чем тут косяк?
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Спасибо, осталось тока с хуком помучиться... =(
|
|||
|
||||
Twiddle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2009 Репутация: нет Всего: нет |
Кто нить может конкретно помочь за хорошее пиво? Кто не пьет пиво можем договориться yf аналогичное вознаграждение... =\ Тупо надо перехватить нажатие кнопки. При нажатии выполняется мой код который я уже написал с горем-пополам. Пасибо заранее... Писать можно в пм.
PS: не ругайтесь на меня ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |