![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить что под курсором находится ссылка ?
Кириешки © (2004-11-21 08:44:00)Помогите очень нужно.
KilkennyCat (2004-11-21 17:31:00) [1]
> Ihor Osov'yak © (21.11.04 17:01) [25]
да, с акроридером я тоже мучался...
на самом деле, я такую проблему решал именно ОСRом, но поскольку необходимость отлова текста была только для одного приложения, использующего всегда один и тот же набор символов, без возможности их изменения, то распознование шло просто и 100%. Хотя, конечно, со скоростью в способе перехвата апи даже не стоит и сравнивать...
Ihor Osov'yak (2004-11-21 17:01:00) [2]2 [23] KilkennyCat © (21.11.04 15:24)
это, собственно, п2. - и ОСR, собственно, одна из наиболее существенных составляющих. Когда в одном проекте нужно было решить похожую задачу - пошел по пути перехвата апи. Решение не работало только для акроридера (из тех программ, с которыми экспериментировал) - наверное акроридер хитро делает вывод текста. Но, собственно, акроридер не входил в число обязательно перехватываемых приложений согласно ТЗ.
Кириешки (2004-11-21 16:44:00) [3]Мда..
KilkennyCat (2004-11-21 15:24:00) [4]Решение, отвечающее большинству требований от Ihor Osov'yak © (21.11.04 13:08) [13] :
Поскольку, в конечном итоге на экране мы видим обыкновенный растр, то пофиг, строка сие или не строка (вообще, под строкой можно называть нарисованные буквы, к которым можно применить хотя бы функцию копирования, но это чисто мое опредление). Отлавливаем скриншот экрана под курсором в области, достаточно превышающей стандартную для этого приложения высоту шрифта и ширину нескольких букв. И пытаемся распознать. Получилось распознование - строка. Не получилось - значит, возможно, не строка.
Piter (2004-11-21 14:45:00) [5]Новичек (21.11.04 14:23) [21]
Думаю, у автора вопроса именно такая ситуация
да? А значит если TControl, то API лопатить не придется? И как же называется функция в VCL, которая реализовывает данный функционал?
Новичек (2004-11-21 14:23:00) [6]
> Piter
Думаю, у автора вопроса именно такая ситуация. В противном случае придется лопатить API :-)
Piter (2004-11-21 14:20:00) [7]Новичек (21.11.04 13:01) [12]
Единственное, что приходит в голову, - это обрабатывать события мыши при передвижении её над потомками TControl
хм. Ты считаешь, что все windows программы написаны на Дельфи, да еще с применением VCL?
Ihor Osov'yak (2004-11-21 13:58:00) [8]в дополненеие к 17 для Кириешки.
Также дайте определение, что такое строка в Вашем понимании.
Piter (2004-11-21 13:57:00) [9]Кириешки © (21.11.04 13:28) [15]
меня интересует как проверить что под курсором именно строка?
а TLabel это в твоем понимании не "строка"?
И тебе еще один вопрос задали - в блокноте написано http://www.blabla.net- это строка или как?
Ihor Osov'yak (2004-11-21 13:56:00) [10]2 [14] GuAV ©
Методом перехвата апишных функций, выводящих текст и последующим форсированием перерисовки соотв. региона. Я не говорил, что это тривиальная задача.
2 [15] Кириешки © (21.11.04 13:28)
Читать 1, 13. До просветления.
Shadow-st (2004-11-21 13:52:00) [11]Научись задавать вопрос правильно порусски, а непиши здесь какие-то обрывки
Кириешки (2004-11-21 13:28:00) [12]Ihor Osov'yak © (21.11.04 13:08) [13]
>... меня интересует как проверить что под курсором именно строка?
GuAV (2004-11-21 13:18:00) [13]Ihor Osov'yak © (21.11.04 13:08) [13]
даже для случаев, если соотв. объект хранит партизанское молчание в ответ на WM_GETTEXT и GetWindowText
Как ?
Имеем TLabel или канву TPaintBox с урлой. Как реализовать сабж ?
Ihor Osov'yak (2004-11-21 13:08:00) [14]2 Кириешки
>А меня интересует как при наведении мыши на какую-нибудь строку (вообще а не в моей программе) ПРОВЕРИТЬ содержит ли эта строка html адрес. Вот. Ну не знаю как еще более понятно объяснить...
Так все же интересует общий случай или частний, например, ссылку в окне IE или активИхс от ИЕ?
Для примера три случая:
1. в окне блокнота написало http://www.blabla.net- это ссылка в вашем понимании?
2. Картинка, отображается в Paint, там теми же пикселями нарисовано http://www.blabla.net- что это?
3. В окне ие есть линк.. Вероятнее всего, Вы имеете ввиди такой случай. Но вот неясно, только он, или еще в допорление 1, а может и 2?
Зы. вариант 3 решается с помошью штатных средств и довольно просто.
1 - решаем в большинсве случаев (даже для случаев, если соотв. объект хранит партизанское молчание в ответ на WM_GETTEXT и GetWindowText)
2 - вероятнее всего, приемлемых на практике вариантов решения нет.
Новичек (2004-11-21 13:01:00) [15]Единственное, что приходит в голову, - это обрабатывать события мыши при передвижении её над потомками TControl.
Кириешки (2004-11-21 12:56:00) [16]Бесспорно. Но меня интересует как проверить что под курсором именно строка? Вот в чем фактически проблема.
Новичек (2004-11-21 12:41:00) [17]В таком случае придется анализировать содержимое полученной строки, и, c большой степенью вероятности, именовать ссылкой последовательность слов, начинающуюся с 'http://' или 'ftp://' и разделенных точкой.
Кириешки (2004-11-21 12:31:00) [18]Новичек (21.11.04 12:22) [8].
Нет.
Вот представте. При наведении мыши на заголовок формы вы проверяете действительно ли это заголовок, так? А меня интересует как при наведении мыши на какую-нибудь строку (вообще а не в моей программе) ПРОВЕРИТЬ содержит ли эта строка html адрес. Вот. Ну не знаю как еще более понятно объяснить...
Новичек (2004-11-21 12:22:00) [19]
> Кириешки
Иными словами, необходимо проверить действительность ссылки в инете, подсказанной TLabel?
Кириешки (2004-11-21 12:15:00) [20]Нет -это TLabel разукрашенный в синий цвет.