![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Здравствуйте,
как осуществить получение СЛОВА из под курсора из других приложений(IE, FireFox, Outlook...)? Где-то (возможно даже на этом форуме) видел то ли готовое решение, то ли библиотеку; поиск не помог. Подобное видел в приложениях: TranslateIT, Lingvo Кто чем может помочь? Заранее спасибо. |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Это сделано на искусственных нейросетях. Касательно Лингво 12 могу сказать на 100% - используется библиотека LvHook.dll, в которой помимо прочих устанавливается хук на WH_MOUSE.
В дополнение к этому там есть еще такие библиотеки, как FineNet.dll и FineObj.dll - файлы достались от небезызвестного FineReader'a, сети отлично обучены. Лингво анализирует положение мыши и настройку кнопок (GetKeyState) для перевода. Фотографирует область (получает hDC, определяет выравнивание текста, производит координатную обработку) и пытается произвести Text recognition. |
|||
|
||||
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
мда, хотя бы примерчик на это дело...
|
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 5 Всего: 116 |
Ну, начать можешь с самой первой ссылки внизу страницы, в разделе "А здесь смотрели?" ...
|
|||
|
||||
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Прошёлся по интернету.
везде советуют юзать WindowFromPoint и WM_GETTEXT. но вот вопрос: как их синхронизировать? Как получть handle элемента с текстом? |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
Это бессмысленно. Слово из под курсора так не получить (в браузерах все отрисовывается). Вперед на BaseGroup изучать алгоритмы нейронных сетей. По теме: классификация образов. |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Rrader, Ыыыы да не обязательно извращаться с нейросетями, можно обычными шаблонами обойтись.
|
|||
|
||||
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Соответственно имеем приложение.
Пусть, например, браузер FireFox. Соответственно, текст отрисовывается в РАЗНЫХ Элементах. Рисунок в аттаче: Вот ,например, так раполагаются разные элементы в Firefox (выделены прямоугольниками). Вопрос: как по коррдинатам мыши получить координаты и размеры эмемента. ![]() Присоединённый файл ( Кол-во скачиваний: 33 ) ![]() |
|||
|
||||
Alix |
|
|||
![]() L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 3 Всего: 23 |
Есть вариант с написанием компонента для FireFox, которому дают координату экранную, которая простыми махинациями превращается в координату на окне текущей страницы. Далее зная ее можно выловить элемент, в котором находится искомое слово, например, DIV или A. Как дальше, честно говоря, не знаю. В принципе, то что надо сделать чтобы работало досюда, я могу объяснить, правда писать придется на Си, т.к. под дельфи я библиотек mozill'ы не встречал, а самому было лень переводить.
С другой стороны не думаю, что все так безысходно, т.к. если сам браузер может определить что там за слово (кстати, если оно выделено, то всё еще проще), то и необходимый интерфейс для компонентов должен предоставлять, просто я так глубоко этим не интересовался. Конечно, кроме случаев когда слово - картинка. -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
хм.. просто на изображениях нифига не переводит текст... а на лабелах переводит ![]() Это сообщение отредактировал(а) MetalFan - 29.10.2008, 18:39 -------------------- There are always someone smarter than you... |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
исследую проблему...
наткнулся на платную и недешевую библиотеку - Text Capture Component - GetWord 3.1 можно скачать заценить... немножко поковыряв ее можно прийти к выводу, что там осуществляется попытка перехвата TextOut'а. также была замечена функция AccessibleObjectFromPoint... в аттаче эксперимент с ее использованием. копаем дальше? Присоединённый файл ( Кол-во скачиваний: 60 ) ![]() -------------------- There are always someone smarter than you... |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
никому не интересно... ну и ладно)
-------------------- There are always someone smarter than you... |
|||
|
||||
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
[Fatal Error] IAccTest_Form.pas(7): File not found: 'oleacc.dcu'
кинте недостающее ![]() |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
lazutov, нет делфи на этой машине. в 2006 уже точно есть такой файлик...
приаттачил Это сообщение отредактировал(а) MetalFan - 30.10.2008, 22:38 Присоединённый файл ( Кол-во скачиваний: 68 ) ![]() -------------------- There are always someone smarter than you... |
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 5 Всего: 50 |
Работает. Делаем компонент и начинаем зарабатывать $ = )
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Qu1nt, да там не все так просто... для лабела например этим способом ничего не приходит...
-------------------- There are always someone smarter than you... |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
блин, как щас помню, была такая тема... там сравнивали механизм с лингво, но то-ли потерлась та тма, то ли хз.
про лейблы - уже обсуждалось на форуме. они бывают разные - некоторые объекты, а некоторые иногда отрисовываются на форме и не являются компонентом в некоторых прогах, как и грид, с которого тоже ничего считать незя. жаль тему ту не могу найти |
|||
|
||||
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
а не подскажите, как получить координаты и размеры элемента, с которого брался текст?
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
CompWorm, да, тоже что-то такое припоминается....
lazutov, см.методы IAccessible Это сообщение отредактировал(а) MetalFan - 31.10.2008, 08:55 -------------------- There are always someone smarter than you... |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
MetalFan,
занятная программка у тебя... но работает она далеко не везде. к примеру, меню, тривью не пашет... не читается код из окна дельфи 7 посмотри меню фраерфокса - там что-то определяется, но все менюшки перепутаны функция lAcc.Set_accValue(lAccCh, 'крякнуто!'); работает исключительно с текстовыми окнами... стоит отметить, что lAcc.Get_accDescription дает тулпиксовый текст. попробую вечером дополнить твою прогу обыными методами определения текста и класа объекта... вопрос тебе... а почему из браузера дается текст до перевода коретки или окончания форматирования текста, а не до пробела? ты пробовал до первого пробела определить текст, игнорируя форматирование текста? Это сообщение отредактировал(а) CompWorm - 31.10.2008, 11:21 |
|||
|
||||
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
как я только эти IAccessible не крутил. нет результата.
|
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
lazutov, что не понятно то? вот тебе пример, как обещал... три способа в одном http://www.filehoster.ru/files/bq8198 вот описанные мною выше проблемы действительно хитрые ![]() короче, я слабак. будем ждать что там MetalFan наковыряет ![]() к стати, преславутый IAccessible основан на вызове месаджа WM_GETOBJECT... но от этого не легче, ибо как я понял, если этого интерфейса у объекта изначально не предусмотренно, то и взять с такого объекта нечего ![]() Это сообщение отредактировал(а) CompWorm - 1.11.2008, 00:45 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
остается перехват вызова функции вывода на канву...
-------------------- There are always someone smarter than you... |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
через getDC чтоль?
- обновил для канвы http://www.filehoster.ru/files/bq8657 я все больше склоняюсь к методам Rrader'а... то есть через распознание изображения. к примеру, IAccessible дает не слово, а фразу до перевода каретки или смены шрифта, что вносит вопрос о том как же выковырять нужное слово под курсором... вот сегодня пытаюсь получить клиентские координаты курсора над объектом. в сочетании с getDC и анализом графики, как предлагает Rrader (пока без нейросетей, хотя с ними лучше) эти координаты помогли бы вычленить нужное слово. отсюда вопрос: как получить локальные координаты мыши над объектом? например, можно проползти по всей иерархии и с помощью ClipRect подсчитать координату мыши как разницу между абсолютным положением ректангла объекта и координаты мыши... способ геморный ![]() ![]() |
|||
|
||||
lazutov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Файл не найден. Вторую ссылку видел и поцентов на 80 понял. То ли у меня с мозгами очень туго, ![]() , left, width,heigth) элемента, а я получаю либо нули, либо еррры. Заранее спасибо. |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
чудеса! действительно не пашет ссылка... а с утра проверял - работала
![]() http://www.filehoster.ru/files/bq8657 http://rar.ifolder.ru/8860521
нет у него таких свойств ![]() Это сообщение отредактировал(а) CompWorm - 1.11.2008, 23:05 Присоединённый файл ( Кол-во скачиваний: 53 ) ![]() |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: 1 Всего: 31 |
я выше написал, что из TStringGrid получить данные незя...
беру свои слова обратно. ![]() вот в этой статье Rrader отжигает по поводу значений из чужих процессов http://forum.vingrad.ru/articles/topic-226725/unread-1.html ![]() статейка суровая ![]() полагаю, желающих развить из этого тему для текста под курсором не найдется ![]() |
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
CompWorm, использовать предложенные в статье методы для получения текста под курсором - ну очень громоздко, а подчас и нереально. И только для программ Delphi/BCB.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |