|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 6, 2004 12:24:38 С помощью посылки чужому окну (находящемся под курсором) сообщения WM_GETTEXT я получаю его текст . А как можна получить текст который "нарисован" (TextOut,ExtTextOut,DrawText) ? |
|
|
Дата: Апр 6, 2004 14:11:35 Считать прямоуголькник с текстом как картинку и распознать файнридером :) |
|
|
Дата: Апр 6, 2004 16:45:32 · Поправил: prog наверное можно получить координаты объекта,(которому посылается WM_GETTEXT)и сграбастать эту область экрана (это уже было), и потом ... не знаю.. наверное перебрать прямоугольник по точкам и сгенерить строку блин... круто. |
|
|
Дата: Апр 6, 2004 16:57:35 А если подойти к проблеме по-другому.. Например, перехватывать TextOut,ExtTextOut,DrawText? |
|
|
Дата: Апр 6, 2004 17:01:42 наверняка они уже нарисовались раньше чем... |
|
|
Дата: Апр 6, 2004 17:24:42 Да я делал прогу http://wasm.ru/forum/files/_1448566602__gettext.zip , которая грабит текст из MessageBox . Но , на месаджбоксах дельфийских прог не срабатывает ! Я так понял , что дельфи РИСУЕТ текст в TMessageForm . Думал может в свойствах (GetProp) окна (TMessageForm) храняться указатели на что-то , что поможет найти текст (если он не разрушаеться после рисования) . А там точно указатели есть , примерно такие : 0014DF28 CC32SubclassInfo 00E6CDA4 Delphi00000268 00E6CDA4 ControlOfs0040000000000230 |
|
|
Дата: Апр 6, 2004 18:13:32 [ bogrus - Я так понял , что дельфи РИСУЕТ текст в TMessageForm ] Как рисует? По пикселям, без WinAPI что-ли - так только в игрушках будут делать, да и то далеко не всегда IMHO. Однозначно вызываются API.. И тогда в стеке лежат нужные адреса строчек текста - остается только их взять. |
|
|
Дата: Апр 6, 2004 18:45:04 Однозначно вызываются API.. Дак я ж говорил , что-то из этих (TextOut,ExtTextOut,DrawText) И тогда в стеке лежат нужные адреса строчек текста Об этом я подозревал , и в принципе они ведь должны там ещё быть пока окно на экране (чтобы перерисовывать окно) ? остается только их взять Самое кульное , как определить откуда брать ? Ведь не понятно в чей стек смотреть и по какому смещению :) Может рисует не приложение а .vcl всякие ? И доберусь ли я от hDc под курсором к смещению в стеке его потока ? |
|
|
Дата: Апр 6, 2004 18:59:35 в принципе они ведь должны там ещё быть пока окно на экране (чтобы перерисовывать окно) Ага, все все рисуют как раз по приходу WM_PAINT :) Ведь не понятно в чей стек смотреть и по какому смещению :) Ну не в свой же стек смотреть :) Может рисует не приложение а .vcl всякие? Предположу, что даже vcl без апи не обходится. И доберусь ли я от hDc под курсором к смещению в стеке его потока? Вот это навряд ли :))) Можешь попробовать клептоманию посмотреть - как у них все устроено, может на мысли натолкнет... |
|
|
Дата: Апр 6, 2004 19:31:20 prog наверняка они уже нарисовались раньше чем... InvalidateRect и перехватить TextOut. |
|
|
Дата: Апр 6, 2004 19:45:24 InvalidateRect и перехватить TextOut Ну-ну... Я вот, например, TextOut вызываю один раз на этапе инициализации окна(диалога), создаю offline DC и при перерисовке только копирую из offline в online :) Как в этом случае? |
|
|
Дата: Апр 6, 2004 19:48:00 masquer Можешь попробовать клептоманию посмотреть - как у них все устроено, Посмотрел . Они решили свой файнридер написать Dr.Golova был прав :) S_T_A_S_ Например, перехватывать TextOut,ExtTextOut,DrawText? Я не хочу , чтобы приложение всегда висело в памяти , только из-за того , что может понадобиться раз в неделю . masquer может на мысли натолкнет... Ага , закрыть тему ... |
|
|
Дата: Апр 6, 2004 20:03:00 masquer Некоторые криво написанные программы (splash-screen'ы) вообще рисуют только один раз и после наложения других окон оставляют белые пятна :-) Писать распознаватель текста - затея, мягко говоря, не дзенная. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.107 |