![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Prospekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 30.5.2012 Репутация: нет Всего: 1 |
Собственно вопрос озвучен, есть приложение, и у него есть несколько Label-ов. Как получить текс с них? Принимаются к рассмотрению любые извращения.
Идентицифировать (различать) Label-ы можно, например, зная или их Id (index) или их расположение. Темы: http://forum.vingrad.ru/topic-94012.html#st_15_view_0 http://forum.vingrad.ru/topic-186181.html прочитаны, задача пока актуальна. Мне нужно именно считать текст, а не изменять. |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
TLabel - графический котрол, своего окна не имеет и данные хранит по какому-то адресу в памяти, искать его я бы не стал.
Имхо тут поможет только OCR ( http://stackoverflow.com/questions/4043876...ry-should-i-use ) -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
Prospekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 30.5.2012 Репутация: нет Всего: 1 |
Это было первое, что пришло мне в голову. Но почему-то кажется, что это не оптимальное решение, что найти этот самый Label всеже будет проще.
Ещё предложения? |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
Удачи! -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: нет Всего: 20 |
Если этот самый Label это TLabel, то его нельзя "найти". -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
попробуй перехватить api отрисовки текста, и вычислить нужную строку по хендлу окна-родителя TLabel и координатам в нём
-------------------- Обижено школьников: 8 |
|||
|
||||
Prospekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 30.5.2012 Репутация: нет Всего: 1 |
А можно пример. Каким образом можно перехватить? |
|||
|
||||
Ne1tr1n0 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 1.3.2009 Репутация: 2 Всего: 8 |
||||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: нет Всего: 20 |
Кстати сначала стоит убедиться, что это именно Label-ы. Вполне вероятно, что это стандартные Windows контролы STATIC TEXT. И хуки никакие не нужны будут. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
загугли "перехват api" -------------------- Обижено школьников: 8 |
|||
|
||||
Prospekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 30.5.2012 Репутация: нет Всего: 1 |
Процентов 95, что стандартные лейбы, текст изменяется при работе программы, а как я понимаю static text - это неизменяемый текст. Да и смысла городить там что-то другое нет. Ne1tr1n0, я не разобрался. Я конечно погуглю отлавливание api, но если не сложно объясните словами, как это возможно впринципе. Залесть в цикл обработки сообщений своей программы это понятно, а вот чужой, без декомпиляции и исходного кода. Объясните идиологию такого подхода. Пока у меня непонимание и на тактическом уровне и на стратегическом. Это сообщение отредактировал(а) Prospekt - 24.12.2012, 09:02 |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
Допустим имеется сторонняя программа, работающая от лица пользователя (ring3). Мы пишем программу, которая делает: 1) Запускает необходимую нам программу (для Vista, Win7, 8 - в режиме SUSPENDED, с XP тут проблемы) 2) С помощью CreateRemoteThread создаём в этой программе поток, который загружает нами написанную dll в адресное пространство программы 3) Эта длл должна просмотреть секцию импорта exe-файла и найти там выховы системных функций, в данном случае DrawTextA и DrawTextW 4) Адреса функций перезаписываются нашими функциями, которые будут принимать данные, обрабатывать и по желанию - запускать оригинальные функции 5) Профит Трудность, с которой придётся столкнуться: нет ни одного толкового примера в интернете, работающего в XP-Win8, тем более с учётом x64, так что если надо универсальность - придётся попотеть. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
Prospekt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 30.5.2012 Репутация: нет Всего: 1 |
Спасибо всем за помощь.
Вопрос снимается, прогулгил тему. Как бы так сказать, меня отталкивает даже не то, что это сложновато (для меня пока сложно), а некрасивость решения, менять чужую прогу хоть и на время, пусть и динамически - это не то. Лучше уж действительно считывать изображение и собирать таким образом информацию, тем более что шрифт постоянен и известен, как и цвет. Плюс в большинстве случаев значением является число, проще будет по семплам разбирать картинку. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
Проблема только для XP, делается:
CreateProcess с флагом CREATE_SUSPENDED CreateRemoteThread WaitForSingleObject (созданный поток) ResumeThread (оригинальный поток приложения). В результате имеем что программа завершает работу :( Читал форумы, люди на это наталкиваются: http://stackoverflow.com/questions/9695370...-primary-thread http://www.wasm.ru/forum/viewtopic.php?pid=308079 http://www.gamedeception.net/threads/17964...s-what-the-fuck http://bugtraq.ru/cgi-bin/forum.mcgi?type=...=6&m=143610 http://forum.sources.ru/index.php?showtopic=266627 тут тоже проблемы у людей Кто-то пишет что в XP странный загрузчик и если запускать с CREATE_SUSPENDED, то exe ещё недоинициализирован, что исправили в поздних виндах. Но если есть идеи - я могу создать отдельную ветку для обсуждения. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |