Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить текст(слово)из-под курсора 
:(
    Опции темы
lazutov
Дата 25.7.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



Здравствуйте,
как осуществить получение СЛОВА из под курсора из других приложений(IE, FireFox, Outlook...)?
Где-то (возможно даже на этом форуме) видел то ли готовое решение, то ли библиотеку; поиск не помог.
Подобное видел в приложениях: TranslateIT, Lingvo
Кто чем может помочь?
Заранее спасибо. 
PM MAIL   Вверх
Rrader
  Дата 26.7.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Это сделано на искусственных нейросетях. Касательно Лингво 12 могу сказать на 100% - используется библиотека LvHook.dll, в которой помимо прочих устанавливается хук на WH_MOUSE.
В дополнение к этому там есть еще такие библиотеки, как FineNet.dll и FineObj.dll - файлы достались от небезызвестного FineReader'a, сети отлично обучены. Лингво анализирует положение мыши и настройку кнопок (GetKeyState) для перевода. Фотографирует область (получает hDC, определяет выравнивание текста, производит координатную обработку) и пытается произвести Text recognition.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
lazutov
Дата 26.7.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



мда, хотя бы примерчик на это дело...
PM MAIL   Вверх
volvo877
Дата 26.7.2008, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 5
Всего: 116



Ну, начать можешь с самой первой ссылки внизу страницы, в разделе "А здесь смотрели?" ...
PM MAIL   Вверх
lazutov
Дата 26.7.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



Прошёлся по интернету. 
везде советуют юзать WindowFromPoint и WM_GETTEXT.
 но вот вопрос: как их синхронизировать? Как получть handle элемента с текстом?
PM MAIL   Вверх
Rrader
  Дата 26.7.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



Цитата(lazutov @  26.7.2008,  20:28 Найти цитируемый пост)
но вот вопрос: как их синхронизировать? Как получть handle элемента с текстом?

Это бессмысленно. Слово из под курсора так не получить (в браузерах все отрисовывается).  Вперед на BaseGroup изучать алгоритмы нейронных сетей. По теме: классификация образов.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
ne0n
Дата 27.7.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 4
Всего: 11



Rrader,  Ыыыы да не обязательно извращаться с нейросетями, можно обычными шаблонами обойтись.
PM MAIL ICQ   Вверх
lazutov
Дата 28.10.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



Соответственно имеем приложение.
Пусть, например, браузер FireFox.
Соответственно, текст отрисовывается в РАЗНЫХ Элементах.
Рисунок в аттаче: Вот ,например, так раполагаются разные элементы в Firefox (выделены прямоугольниками).
Вопрос: как по коррдинатам мыши получить координаты и размеры эмемента. 
 smile 

Присоединённый файл ( Кол-во скачиваний: 33 )
Присоединённый файл  Untitled.png 7,52 Kb
PM MAIL   Вверх
Alix
Дата 29.10.2008, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 3
Всего: 23



Есть вариант с написанием компонента для FireFox, которому дают координату экранную, которая простыми махинациями превращается в координату на окне текущей страницы. Далее зная ее можно выловить элемент, в котором находится искомое слово, например, DIV или A. Как дальше, честно говоря, не знаю. В принципе, то что надо сделать чтобы работало досюда, я могу объяснить, правда писать придется на Си, т.к. под дельфи я библиотек mozill'ы не встречал, а самому было лень переводить. 
С другой стороны не думаю, что все так безысходно, т.к. если сам браузер может определить что там за слово (кстати, если оно выделено, то всё еще проще), то и необходимый интерфейс для компонентов должен предоставлять, просто я так глубоко этим не интересовался. Конечно, кроме случаев когда слово - картинка.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
MetalFan
Дата 29.10.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(Rrader @  26.7.2008,  08:58 Найти цитируемый пост)
Касательно Лингво 12 могу сказать на 100% - используется библиотека LvHook.dll, в которой помимо прочих устанавливается хук на WH_MOUSE.
В дополнение к этому там есть еще такие библиотеки, как FineNet.dll и FineObj.dll - файлы достались от небезызвестного FineReader'a, сети отлично обучены. Лингво анализирует положение мыши и настройку кнопок (GetKeyState) для перевода. Фотографирует область (получает hDC, определяет выравнивание текста, производит координатную обработку) и пытается произвести Text recognition. 

хм.. просто на изображениях нифига не переводит текст... а на лабелах переводит  smile 

Это сообщение отредактировал(а) MetalFan - 29.10.2008, 18:39


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MetalFan
  Дата 29.10.2008, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



исследую проблему...
наткнулся на платную и недешевую библиотеку - Text Capture Component - GetWord 3.1
можно скачать заценить...
немножко поковыряв ее можно прийти к выводу, что там осуществляется попытка перехвата TextOut'а.
также была замечена функция AccessibleObjectFromPoint...
в аттаче эксперимент с ее использованием. 
копаем дальше?

Присоединённый файл ( Кол-во скачиваний: 60 )
Присоединённый файл  IAccessibleTest.rar 1,41 Kb


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MetalFan
Дата 30.10.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



никому не интересно... ну и ладно)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
lazutov
Дата 30.10.2008, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



[Fatal Error] IAccTest_Form.pas(7): File not found: 'oleacc.dcu'
кинте недостающее smile
PM MAIL   Вверх
MetalFan
Дата 30.10.2008, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



lazutov, нет делфи на этой машине. в 2006 уже точно есть такой файлик...
приаттачил

Это сообщение отредактировал(а) MetalFan - 30.10.2008, 22:38

Присоединённый файл ( Кол-во скачиваний: 68 )
Присоединённый файл  oleacc.pas 31,29 Kb


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Qu1nt
Дата 30.10.2008, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 5
Всего: 50



Работает. Делаем компонент и начинаем зарабатывать $ = )
PM MAIL   Вверх
MetalFan
Дата 30.10.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Qu1nt, да там не все так просто... для лабела например этим способом ничего не приходит...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
CompWorm
Дата 31.10.2008, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



блин, как щас помню, была такая тема... там сравнивали механизм с лингво, но то-ли потерлась та тма, то ли хз.

про лейблы - уже обсуждалось на форуме. они бывают разные - некоторые объекты, а некоторые иногда отрисовываются на форме и не являются компонентом в некоторых прогах, как и грид, с которого тоже ничего считать незя. жаль тему ту не могу найти 


--------------------
PM MAIL   Вверх
lazutov
Дата 31.10.2008, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



а не подскажите, как получить координаты  и размеры элемента, с которого брался текст?
PM MAIL   Вверх
MetalFan
Дата 31.10.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



CompWorm, да, тоже что-то такое припоминается....
lazutov, см.методы IAccessible



Это сообщение отредактировал(а) MetalFan - 31.10.2008, 08:55


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
CompWorm
Дата 31.10.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



MetalFan
занятная программка у тебя... но работает она далеко не везде. к примеру, меню, тривью не пашет... не читается код из окна дельфи 7

посмотри меню фраерфокса - там что-то определяется, но все менюшки перепутаны

функция
lAcc.Set_accValue(lAccCh, 'крякнуто!');
работает исключительно с текстовыми окнами...
стоит отметить, что lAcc.Get_accDescription дает тулпиксовый текст.

попробую вечером дополнить твою прогу обыными методами определения текста и класа объекта...

вопрос тебе... а почему из браузера дается текст до перевода коретки или окончания форматирования текста, а не до пробела? ты пробовал до первого пробела определить текст, игнорируя форматирование текста?

Это сообщение отредактировал(а) CompWorm - 31.10.2008, 11:21


--------------------
PM MAIL   Вверх
lazutov
Дата 31.10.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



как я только эти IAccessible не крутил. нет результата.
PM MAIL   Вверх
CompWorm
Дата 1.11.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



Цитата

как я только эти IAccessible не крутил. нет результата. 


lazutov, что не понятно то? вот тебе пример, как обещал... три способа в одном
http://www.filehoster.ru/files/bq8198

вот описанные мною выше проблемы действительно хитрые  smile  целый день голову ломаю как к этим выпадающим менюшкам подкопаться... вот щас пытаюсь через хендл получить контроль над объектом, проанализировать по таблице известных слассов и вытащить нужное свойство... проблема в том, что я даже на форме не способен достать текст пункта меню под курсором... куда уж там к чужим объектам. 
короче, я слабак. будем ждать что там MetalFan наковыряет smile 

к стати, преславутый IAccessible основан на вызове месаджа  WM_GETOBJECT... но от этого не легче, ибо как я понял, если этого интерфейса у объекта изначально не предусмотренно, то и взять с такого объекта нечего smile 

Это сообщение отредактировал(а) CompWorm - 1.11.2008, 00:45


--------------------
PM MAIL   Вверх
MetalFan
Дата 1.11.2008, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



остается перехват вызова функции вывода на канву...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
CompWorm
Дата 1.11.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



через getDC чтоль?
- обновил для канвы
http://www.filehoster.ru/files/bq8657

я все больше склоняюсь к методам Rrader'а... то есть через распознание изображения.
к примеру, IAccessible дает не слово, а фразу до перевода каретки или смены шрифта, что вносит вопрос о том как же выковырять нужное слово под курсором...

вот сегодня пытаюсь получить клиентские координаты курсора над объектом. в сочетании с getDC и анализом графики, как предлагает Rrader (пока без нейросетей, хотя с ними лучше) эти координаты помогли бы вычленить нужное слово.

отсюда вопрос: как получить локальные координаты мыши над объектом?
например, можно проползти по всей иерархии и с помощью ClipRect подсчитать координату мыши как разницу между абсолютным положением  ректангла объекта и координаты мыши... способ геморный  smile  (есть другие предложения?) ну и проанализировать все что есть в области курсора   smile 


--------------------
PM MAIL   Вверх
lazutov
Дата 1.11.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



Цитата

lazutov, что не понятно то? вот тебе пример, как обещал... три способа в одном
http://www.filehoster.ru/files/bq8198

Файл не найден.
Вторую ссылку видел и поцентов на 80 понял.
То ли у меня с мозгами очень туго, smile  то ли я что-то не так делаю.Необходимо получить координаты (Top
, left, width,heigth) элемента, а я получаю либо нули, либо еррры.
Заранее спасибо. 

PM MAIL   Вверх
CompWorm
Дата 1.11.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



чудеса! действительно не пашет ссылка... а с утра проверял - работала  smile 
http://www.filehoster.ru/files/bq8657
http://rar.ifolder.ru/8860521

Цитата

width, heigth

нет у него таких свойств  smile  - посмотри пример с гетДС в файлике... там Right и Bottom, если я тебя правильно понял

Это сообщение отредактировал(а) CompWorm - 1.11.2008, 23:05

Присоединённый файл ( Кол-во скачиваний: 53 )
Присоединённый файл  FULL_MOUSE_CONTROL.rar 8,98 Kb


--------------------
PM MAIL   Вверх
CompWorm
Дата 5.11.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



я выше написал, что из TStringGrid получить данные незя...
беру свои слова обратно. smile 
вот в этой статье    Rrader отжигает по поводу значений из чужих процессов
http://forum.vingrad.ru/articles/topic-226725/unread-1.html
 smile 
статейка суровая smile 
полагаю, желающих развить из этого тему для текста под курсором не найдется  smile 



--------------------
PM MAIL   Вверх
Rrader
  Дата 6.11.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



CompWorm, использовать предложенные в статье методы для получения текста под курсором - ну очень громоздко, а подчас и нереально. И только для программ Delphi/BCB.

Цитата(CompWorm @  6.11.2008,  00:07 Найти цитируемый пост)
статейка суровая  smile  

 smile 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1145 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.