| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Текст из Label |
| Автор: Sentynel 30.4.2006, 14:58 |
| Всем привет! Требуется помощь для извлечения текста Label из чужой программы. Использую FindWindowEx но дескриптор Label не определяется. Может кто знает решение этой задачи, желательно с примером для ясности. Заранее спасибо!!! |
| Автор: Romikgy 30.4.2006, 15:07 |
| Имхо не является окном и у него нет хендела, это просто картинка на окне , и текст просто с него ты не вытащишь |
| Автор: Sentynel 30.4.2006, 16:44 |
| Тогда каким образом можно взять этот же текст из ListView ? |
| Автор: Romikgy 30.4.2006, 16:57 |
| Дык не есть И листвью это окно , там можно многое Что конкретно нужно то? |
| Автор: Sentynel 30.4.2006, 17:02 |
| Конкретно ситуация такая. Имеется список ListView с графами имя, время, город,..... Активная строка списка отображается в текстах Label-ей , необходимо получить текст активной строки из графы "Время". |
| Автор: Romikgy 30.4.2006, 23:25 |
| Имхо легче попросить отдать у типа такого ListView_GetItemText, чем пытатся чтото взять у |
| Автор: Sentynel 1.5.2006, 18:23 |
| А пример можно для наглядности ? |
| Автор: Yanis 1.5.2006, 19:49 | ||
Добавлено @ 20:01 P. S. Большой пример писать сейчас нету времени |
| Автор: Sentynel 5.5.2006, 20:14 |
| Что то по началу писал кракозяблики, а теперь ничего непишет типа строка пустая . |
| Автор: Rouse_ 5.5.2006, 22:33 |
| Sentynel, потому что данный код будет работать только в пределах адресного пространства вызывающего приложения. Изучайте матчасть, по приходу LVM_GETITEMTEXT данные ложаться в структуру под которую выделена память в адрессном пространстве процесса. Приведенным выше кодом получить можно только данные из собственного ListView; |
| Автор: Rouse_ 6.5.2006, 10:51 |
| Yanis, этот момент был упомянут у Рихтера. Там же указывалось почему можно получить текст из EDIT и нельзя из более новых контролов. И там же показывался способ получения из удаленного приложения. |
| Автор: Smailik 16.5.2006, 13:21 |
а шде именно он был упомянут? у меня похожие грабли |
| Автор: Nickel 17.5.2006, 17:12 | ||
Пожалуйста, написал код, который позволяет брать текст любого листвью:
Как работает: внедряем поток в чужой процесс, который выделят память, просим ListView послать данные в эту область памяти и читаем их оттуда. Как видите есть небольшая проблемка с WaitForSingleObject. ЗЫ: мож в арсенал форумистов добавить или в DRKB? |
| Автор: Rouse_ 17.5.2006, 18:05 |
| А зачем заморочки с CreateRemoteThread? Он там не к месту - банально выделяем память и читаем оттуда... Пример в соседней ветке про RichView ЗЫ: кстати в твоем примере выделенную память Пушкин будет освобождать? |
| Автор: Nickel 17.5.2006, 18:23 | ||
Что-то без CreateRemoteThread не работало, мне показалось логичным, что выделять память должен тот процесс, который будет писать, щас посмотрю почему у меня не работало. Наверно ошибку я исправил при попытке написания с CreateRemoteThread. Зато лишний раз потренировался с созданием удалённых потоков Ага, он самый ;) Склероз атакует! |
| Автор: Rouse_ 17.5.2006, 18:42 | ||
естественно, у тебя зачемто создаются два удаленных потока. Вообщето данный механизм не используется для банального получения данный из чужого ВАП, это инструмент для отладки |
| Автор: Nickel 18.5.2006, 13:48 | ||
Ну главное, что воробьи от этого помирают |