Копирование невыделяемого текста
под виной была охуенная прога, которая позволяла выелить любой текст. по никсу без понятия.
кнопка PrtSc, далее вставить в Paint, подрезать и оформить и сохранить, для дальнейшего использования.
ну это как минимум можно делать на лету через апи файн ридера.
интересно, как ты будешь графику выделять, а не контрол?
мессаджи и эксэпшены обычно не выделяются, а по Ctrl+C копируются.
интересно, как ты будешь графику выделять, а не контрол?чё?
сделать горячую кнопку на типа альт+шифт+принтскрин по нажатию на неё появляется инструмент графического выделения. выделяешь нужную область, она её автоматом вырезает, ерез апи файнридера распознает и копирует в буфер обмена.
У файнридера нету API, есть FineReader Engine, можешь сам нагуглить сколько это стоит.
есть FineReader Engineименно его я имел ввиду под апи.
про стоимость разговора не было.
Под виндой есть фриварный Windows Scanner, который позволяет, в частности, получить текст любого стандартного контрола.
так сложилось что весь gui (вне зависимости от платформы) строится на двух примитивах: label и textbox.
label предназначен только для вывода, и не умеет выделять и копировать текст.
textbox предназначен для редактирования текста, и умеет выделять и копировать текст.
подменить один другим проблематично, чтобы при этом ничего не испортить.
заменить label на более расширенный тоже может не прокатить, потому что проги часто используют свои расширения label-а.
но из label-а можно обычно получить текст внешним способом.
под виндой это будет: FindWindow, поиск контрола, например, по координатам, GetText,
под другими ОС думаю будет что-то похожее.
Подозреваю, что на свинге он обламывается
Подозреваю, что на свинге он обламываетсяесли он просто в dc рисует, то - да
зы
.net-ные проги на wpf-е тоже может игнорировать, если специально не поддержали
Подозреваю, что на свинге он обламываетсяДействительно обламывается.
мессаджи и эксэпшены обычно не выделяются, а по Ctrl+C копируются.Обычно - это где?
Я вот сейчас попробовал запустить eclipse при одном уже запущенном, он ругнулся что ворспейс уже используется. Ни ctrl-c, ни ctrl-ins содержимое буфера обмена не изменило.
Обычно - это где?
В венде
и это только при том, что он на
#define WM_GETTEXT 0x000D
отвечает как надо
если делать это по месту, то достаточно сложная задача.В каком смысле "по месту"? По-моему самый правильный способ это сделать - пропатчить тулкиты. Конечно, при этом необходимо для прикладного софта оставить всё api без изменений, чтобы какие бы они не использовали расширения стандартных контролов. Хотя зачем делать такие расширения я не очень понимаю и не особо верю, что они часто используются. Потому как если не хватает какого-то функционала в тулките, то логичнее доработать сам тулкит, чем городить к нему костылей.
но из label-а можно обычно получить текст внешним способомПо идее это зависит не от ОС, а от тулкита. Меня интересуют, конечно же, gtk и qt в первую очередь. Кто-нибудь знает можно ли такое в них?
По-моему самый правильный способ это сделать - пропатчить тулкиты.пропатчить как? перехватить мышку? но тогда получается, что если этот label вставлен в кнопку (или в пункт меню, или еще куда-то то кнопка мышку не получит, и приложение работать не будет.
заменить label на более расширенный тоже может не прокатить, потому что проги часто используют свои расширения label-а
JavaScript в этом смысле рулит. Только на нём примитивы ГУИ вроде как не делают.
Сделал бы хоткей, по которому курсор перебирает лейблы. Таб бы трогать не стал, так как он перебирает активные элементы интерфейса и с такой кнопкой с леблом возникли бы проблемы.
JavaScript в этом смысле рулит.Подробнее можно?
JavaScript в этом смысле рулит. Только на нём примитивы ГУИ вроде как не делают.делают, да еще как, посмотри любой тулкит, например, тот же jquery.
календарь, табы, загрузка файлов, выпадающий список и т.д.
Сделал бы хоткей, по которому курсор перебирает лейблы.обычно label не может иметь фокус, а если делать свой показ выбранности, то придется лезть в процедуру отрисовки label-а
ну так я поэтому и говорю, что это отдельно от таба (а значит и фокуса) надо делать.
JavaScript в этом смысле рулит.
Подробнее можно?
В нём можно до/переопределить уже существующие классы.
То есть в данном случае можно было бы просто поправить label, чтобы его можно было выделять/копировать.
ну, если так рассуждать, то да, из qt можно выдрать - он же на спп, а там есть доступ к rtti. а вот в гтк хз. в общем всё равно это изврат.
нём можно до/переопределить уже существующие классы.доопределить можно, и делается и в обычных фреймворках.
То есть в данном случае можно было бы просто поправить label, чтобы его можно было выделять/копировать.
основная проблема-то в том, что как избежать конфликтов с другими доопределениями, разработчики программ-то считали, что такого доопределения нету.
эээ в яваскрипте есть классы? о.О
эээ в яваскрипте есть классы? о.Офункцию порождающую определенный вид объектов можно считать классом
Ключевое слово prototype
Оставить комментарий
dangerr
В стандартных тулкитах (gtk и qt) по крайней мере по-дефолту далеко не весь текст возможно выделить и скопировать.Например, как правило таков текст в различных диалоговых окнах, сообщениях об ошибках и прочее.
Искренне непонимаю какой м... чудак до такого додумался.
Гугл мало что даёт по теме.
Может кто-нибудь знает есть ли какие-нибудь хаки/патчи, чтобы исправить положение?