Получить текст под курсором мыши
От: sonick  
Дата: 24.10.08 12:44
Оценка:
Возникла следующая проблема:
Необходимо получить текст под курсором мышки, но методы Active Accessibility и обычный SendMessage(...GET_TEXT...) не подходят. Например, есть программа Skype и в самом первом окне ввода логина и пароля есть надпись "Добро пожаловать в Skype". Каким образом можно получить эту надпись в своей программе? Выше сказанными методами её получить не удается, но есть переводчик ABBYY Lingvo 12, который этот текст получает и переводит. Может кто знает как он берет текст под курсором?

24.10.08 17:44: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
текст под курсором lingvo
Re: Получить текст под курсором мыши
От: Сергей Мухин Россия  
Дата: 24.10.08 12:45
Оценка:
Здравствуйте, sonick, Вы писали:

S>Необходимо получить текст под курсором мышки, но методы Active Accessibility и обычный SendMessage(...GET_TEXT...) не подходят. Например, есть программа Skype и в самом первом окне ввода логина и пароля есть надпись "Добро пожаловать в Skype". Каким образом можно получить эту надпись в своей программе? Выше сказанными методами её получить не удается, но есть переводчик ABBYY Lingvo 12, который этот текст получает и переводит. Может кто знает как он берет текст под курсором?


я то же думал, как это Лингво работаетю. но кроме перехвата вывода текста ничего не придумал.
---
С уважением,
Сергей Мухин
Re: Получить текст под курсором мыши
От: Sergey Россия  
Дата: 24.10.08 12:51
Оценка:
"sonick" <78097@users.rsdn.ru> wrote in message news:3150909@news.rsdn.ru...
> Возникла следующая проблема:
> Необходимо получить текст под курсором мышки, но методы Active Accessibility и обычный SendMessage(...GET_TEXT...) не подходят. Например, есть программа Skype и в самом первом окне ввода логина и пароля есть надпись "Добро пожаловать в Skype". Каким образом можно получить эту надпись в своей программе? Выше сказанными методами её получить не удается, но есть переводчик ABBYY Lingvo 12, который этот текст получает и переводит. Может кто знает как он берет текст под курсором?

Когда-то мне попадалось на глаза описание библиотеки (не бесплатной), которая получала текст, читая экранный битмэп и потом его распознавая.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[2]: Получить текст под курсором мыши
От: Сергей Мухин Россия  
Дата: 24.10.08 12:53
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Когда-то мне попадалось на глаза описание библиотеки (не бесплатной), которая получала текст, читая экранный битмэп и потом его распознавая.


это на порядок сложней, чем перхватывать DrawText или чем там рисуют текст обычно
---
С уважением,
Сергей Мухин
Re[3]: Получить текст под курсором мыши
От: Sergey Россия  
Дата: 24.10.08 13:36
Оценка:
" Сергей Мухин " <23380@users.rsdn.ru> wrote in message news:3150930@news.rsdn.ru...
> Здравствуйте, Sergey, Вы писали:
>
> S>Когда-то мне попадалось на глаза описание библиотеки (не бесплатной), которая получала текст, читая экранный битмэп и потом его распознавая.
>
> это на порядок сложней, чем перхватывать DrawText или чем там рисуют текст обычно

Ну во-первых, если бюджет позволяет, можно купить готовую библиотеку, и это будет проще.
Во-вторых, ваш перехват может перестать работать в следующей версии ОС — по соображениям безопасности, например.
В третьих, текст могут рисовать с помощью средств, о которых вы на момент разработки программы ничего не знаете. Например, вместо DrawText там вполне может оказаться libagg или скажем просто OpenGL какой.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[4]: Получить текст под курсором мыши
От: Сергей Мухин Россия  
Дата: 24.10.08 13:39
Оценка:
Здравствуйте, Sergey, Вы писали:


S>" Сергей Мухин " <23380@users.rsdn.ru> wrote in message news:3150930@news.rsdn.ru...

>> Здравствуйте, Sergey, Вы писали:
>>
>> S>Когда-то мне попадалось на глаза описание библиотеки (не бесплатной), которая получала текст, читая экранный битмэп и потом его распознавая.
>>
>> это на порядок сложней, чем перхватывать DrawText или чем там рисуют текст обычно

S>Ну во-первых, если бюджет позволяет, можно купить готовую библиотеку, и это будет проще.


это конечно!

S>Во-вторых, ваш перехват может перестать работать в следующей версии ОС — по соображениям безопасности, например.


ну тогда и экранный битмап вам не дадут, по тем же соображениям.

S>В третьих, текст могут рисовать с помощью средств, о которых вы на момент разработки программы ничего не знаете. Например, вместо DrawText там вполне может оказаться libagg или скажем просто OpenGL какой.


дык перехватывай все что пишет текст, в чем проблема? Его могут и по пиксельно рисовать, тогда ах!
Но надо же перехватывать у приличных программ, они то от этого обычно не защищаются.
---
С уважением,
Сергей Мухин
Re[5]: Получить текст под курсором мыши
От: Sergey Россия  
Дата: 24.10.08 13:48
Оценка:
" Сергей Мухин " <23380@users.rsdn.ru> wrote in message news:3150997@news.rsdn.ru...

> S>Во-вторых, ваш перехват может перестать работать в следующей версии ОС — по соображениям безопасности, например.

>
> ну тогда и экранный битмап вам не дадут, по тем же соображениям.

Не факт. Одно дело в чужое адресное пространство лезть, другое — экран грабить. Малвари, грабящей экран, я что-то не припомню.

> S>В третьих, текст могут рисовать с помощью средств, о которых вы на момент разработки программы ничего не знаете. Например, вместо DrawText там вполне может оказаться libagg или скажем просто OpenGL какой.

>
> дык перехватывай все что пишет текст, в чем проблема? Его могут и по пиксельно рисовать, тогда ах!

Средствами OpenGL или libagg — это конечно не попиксельно, а битмэпом, но сути проблемы не меняет.

> Но надо же перехватывать у приличных программ, они то от этого обычно не защищаются.


Угу, они не защищаются, они свои задачи решают — 3D там выводят или там алиасинг забарывают. Тока перехватывать опять непонятно что.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[3]: Получить текст под курсором мыши
От: sonick  
Дата: 27.10.08 07:47
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>это на порядок сложней, чем перхватывать DrawText или чем там рисуют текст обычно


А не могли бы вы сказать как можно перехватить DrawText (допустим я поставил Hook в длл). Какое сообщение перехватывать? Сообщение WM_PAINT? Даже если я его перехватываю, где я в нем найду текст?
Re: Получить текст под курсором мыши
От: Carc Россия http://www.amlpages.com/home.php
Дата: 28.10.08 04:38
Оценка: 1 (1)
"sonick" <78097@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3150909@news.rsdn.ru...
> Возникла следующая проблема:
> Необходимо получить текст под курсором мышки, но методы Active Accessibility и обычный SendMessage(...GET_TEXT...) не подходят. Например, есть программа Skype и в самом первом окне ввода логина и пароля есть надпись "Добро пожаловать в Skype". Каким образом можно получить эту надпись в своей программе? Выше сказанными методами её получить не удается, но есть переводчик ABBYY Lingvo 12, который этот текст получает и переводит. Может кто знает как он берет текст под курсором?
>
>
Как то пару тройку месяцев назад вопрос уже поднимался. Тогда написал пару тестов да прогнал их под Лингвой. Получилось следующее: для Edit приходит сообщение WM_GETTEXT, для RichEdit также приходит EM_EXGETSEL — которое специфично исключительно для RichEdit. Для IE волшебным образом выделенный текст вообще уходил в буфер обмена.
Такое ощущение, что Лингва для разных окон используют совершенно разные методы, что в принципе изначально и предполагалось. Хотя безусловно любопытно что они используют последним способом, когда тяжелая артиллерия не работает?
PS: в самописных тестах блокировал обработку WM_GETTEXT, WM_COPY и иже с ними, инициированных не моим, а чужим кодом. В этом случае Лингво грустно обламывалась и текст вынуть не могла. Тоже наводит на мысли....
Posted via RSDN NNTP Server 2.1 beta
Aml Pages Home
Re[4]: Получить текст под курсором мыши
От: CreatorCray  
Дата: 28.10.08 08:21
Оценка:
Здравствуйте, Sergey, Вы писали:

>> перхватывать DrawText или чем там рисуют текст обычно

Не поможет в случае применения двойной буферизации
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.