![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прочесть текст в чужом окне? [D5, WinXP]
ffo_2 © (2007-04-20 21:53:00)При нажатии на 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;
piegc (2007-05-19 15:52:00) [1]<a href= ></a> [url=][/url]
Mr.Devil (2007-04-27 16:31:00) [2]
> > А где почитать можно про «по Рихтеру»
> В книжке Рихтера
ЖЖОШ!!! :))
ANB (2007-04-27 14:01:00) [3]
> А где почитать можно про «по Рихтеру»
В книжке Рихтера
ffo_2 (2007-04-27 13:46:00) [4]
> Короче это все было к тому, что автор наверное не готов
> еще ни к прехвату «по Рихтеру», ни тем более OCR, поэтому
> я и привел этот вариант, что-бы показать безысходность :
> )
А где почитать можно про «по Рихтеру» или OCR? Или пример какой киньте.
Заранее спасибо
homm (2007-04-22 23:15:00) [5]> А ты считаешь, что "тока оптическим распознаванием скриншота
> окна" - это проще будет ? :)
Короче это все было к тому, что автор наверное не готов еще ни к прехвату «по Рихтеру», ни тем более OCR, поэтому я и привел этот вариант, что-бы показать безысходность :)
Riply (2007-04-22 23:05:00) [6]> [12] Leonid Troyanovsky © (22.04.07 23:03)
:)
Leonid Troyanovsky (2007-04-22 23:03:00) [7]
> Riply © (22.04.07 22:56) [10]
> Иногда бывает очень надо и, если не знаешь других способов,
Не переживай. Их, считай, и нет иных способов.
Кроме, пожалуй, OCR :)
--
Regards, LVT.
Riply (2007-04-22 23:03:00) [8]P.S.
>[10] Riply © (22.04.07 22:56)
А ты считаешь, что "тока оптическим распознаванием скриншота окна" - это проще будет ? :)
Riply (2007-04-22 22:56:00) [9]> [8] realist (22.04.07 22:52)
>Только это, имхо, как микроскопом гвозди…
Иногда бывает очень надо и, если не знаешь других способов,
то хватаешся за микроскоп :)
homm (2007-04-22 22:53:00) [10]Так и думал, что забуду ник сменить :)
realist = homm
realist (2007-04-22 22:52:00) [11]> Хамство, впрочем, тоже :)
Это не хамство :(
> Стандартные внедрение и перехват.
Имеется ввиду подмена адреса функции DrawText в таблице импорта адресного пространства целевого процесса? Тогда да. Только это, имхо, как микроскопом гвозди…
Riply (2007-04-22 22:49:00) [12]> [6] homm © (22.04.07 22:39)
>Хм.. Видимо какие-то из них можно перехватить?
>Какие и как?
У Label'а, например, DrawTextA(W)
Стандартные внедрение и перехват. Я делала по Рихтеру.
>Голословие еще никого не красило ;)
Хамство, впрочем, тоже :)
homm (2007-04-22 22:39:00) [13]> Почему ? Например у Label'а получу.
Голословие еще никого не красило ;)
> Все зависит от того какие функции компонент использует для "рисования"
Хм.. Видимо какие-то из них можно перехватить? Какие и как?
Riply (2007-04-22 22:35:00) [14]> [4] homm © (22.04.07 21:26)
>тока оптическим распознаванием скриншота окна.
> [3] Ricks © (22.04.07 20:35)
>У безоконного (без HWND) компонента ты текст не получишь.
>Это одно и тоже что пытаться получть текст, нарисованый на canvas.
Почему ? Например у Label'а получу.
P.S. Все зависит от того какие функции компонент использует для "рисования" :)
homm (2007-04-22 21:26:00) [15]> Как его прочитать?
тока оптическим распознаванием скриншота окна.
Ricks (2007-04-22 20:35:00) [16]У безоконного (без HWND) компонента ты текст не получишь. Это одно и тоже что пытаться получть текст, нарисованый на canvas.
Германн (2007-04-21 02:22:00) [17]
> Leonid Troyanovsky © (20.04.07 22:40) [1]
>
>
> > Как прочесть текст в чужом окне? [D5, WinXP]
>
> Красть грешно.
>
> --
> Regards, LVT.
Но желание "подгядывать в чужие окна" - это в крови у нас!
:-)
Leonid Troyanovsky (2007-04-20 22:40:00) [18]
> Как прочесть текст в чужом окне? [D5, WinXP]
Красть грешно.
--
Regards, LVT.