Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 20.04.2007, 22:00   #1
ffo
 
Регистрация: 14.03.2007
Сообщений: 6
По умолчанию Как прочесть текст в чужом окне?

При нажатии на Button1 с помощью функции "EnumChildProc" я перебираю все дочерние окна чужого
окна (кнопки, едиты, комбобоксы и др.), которое имеет тип "TForm1"и заголовок "Исходные данные расчета",
считываю класс, идетификатор и текст каждого дочернего окна и записываю эти данные в Memo1. Все прекрасно работает.
Вопрос мой в следующем: На той же форме есть Label и мне нужен текст, который содержится в
нем. Как его прочитать? Окна ведь нет у этого Label. А может это и не Label вовсе, а какой
нибудь другой безоконный компонент, в который выведен текст. Помогите кто может считать с него текст.


Код:
 
//функция обратного вызова
function EnumChildProc(Ctrl: hWnd; List: TStrings): Bool; stdcall;
var
 Buf : array [0..80] of char;
 Id : integer;
 Caption : array [0..80] of char;
begin
 Result := True;
 GetClassName(Ctrl, buf, 80);//Класс
 Id := GetDlgCtrlId(Ctrl);//Идентификатор
 GetWindowText(Ctrl, Caption, 80);//Текст окна (кнопки)
 Form1.Memo1.Lines.Add(Format('Класс: %s,      Идентификатор: %d,       Заголовок: %s', [Buf, Id, Caption]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form1.Memo1.Lines.Clear;
 EnumChildWindows( FindWindow('TForm1', 'Исходные данные расчета'),@EnumChildProc,1);
end;
ffo вне форума Ответить с цитированием
Старый 21.04.2007, 08:36   #2
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

ты прав, его нет в списке
мистика какая-то.....
у компоненты TLabel нет свойства Handle значит это не компонент
мне кажется он рисуется как рисунок в канвасе формы, следовательно он идентичен компоненту TImage который тоже просто рисуется в канвасе
rpy3uH вне форума Ответить с цитированием
Старый 21.04.2007, 18:18   #3
Voland
Heavy metal
Пользователь
 
Аватар для Voland
 
Регистрация: 02.04.2007
Сообщений: 42
По умолчанию

Да, TLabel - не оконный компонент. Следовательно, у него нет хендла, и Винда его не видит. Форма, на которой он находится, просто в нужный момент заставляет его отрисовать себя на канве этой формы. Так что его текст из другого приложения ты получить не сможешь.
Voland вне форума Ответить с цитированием
Старый 27.04.2007, 13:50   #4
ffo
 
Регистрация: 14.03.2007
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Voland Посмотреть сообщение
Да, TLabel - не оконный компонент. Следовательно, у него нет хендла, и Винда его не видит. Форма, на которой он находится, просто в нужный момент заставляет его отрисовать себя на канве этой формы. Так что его текст из другого приложения ты получить не сможешь.
Печальн все это.
А "По Рихтору" или OCR?
ffo вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Drag n Drop объект в чужом окне ShiSha_34 Win Api 8 09.11.2010 03:19
Как прочесть исходный текст? Ruber Общие вопросы по Java, Java SE, Kotlin 0 05.06.2008 21:45
Как задать текст в Edit в чужом окне Artem Win Api 6 14.12.2007 20:13
как написать текст в чужом окне мандарин Win Api 2 11.06.2007 11:11
Как при скрытом чужом окне сделать его дочерние окна(сообщения) видимыми ? Starwarrior Win Api 1 20.03.2007 10:51


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS