Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 22:16   #1
sectors70
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 20
По умолчанию Как заменить выделенный пользователем текст в любом приложении?

Привет. Собственно, сабж. Нужно примерное следующее: пользователь выделяет текст в какой-либо программе, например в скайпе, нажимает горячую клавишу, которою обрабатывает моя программа, производит операции с текстом и заменяет его. То есть, чтобы пользователю не приходилось сначала выделять его, копировать в буфер обмена, нажимать горячую клавишу, потом вставлять обратно. Интересует, как это сделать, используя Qt, и возможно ли сделать это кроссплатформенно. Если нет, то нужно хотя бы под винду. Спасибо.
sectors70 вне форума Ответить с цитированием
Старый 13.01.2013, 22:59   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

При такой формулировке ответ "нет"
waleri вне форума Ответить с цитированием
Старый 13.01.2013, 23:10   #3
sectors70
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 20
По умолчанию

Вы про кроссплатформенность? Или про такую возможность в принципе? Я в принципе предполагал, что это невозможно реализовать кроссплатформенно, поэтому сразу оговорился про реализации хотя бы в Windows.
sectors70 вне форума Ответить с цитированием
Старый 14.01.2013, 08:38   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

И то и другое - универсальноге решения нет. Можно заточить под какието популярные программы.
waleri вне форума Ответить с цитированием
Старый 14.01.2013, 13:07   #5
sectors70
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 20
По умолчанию

ясно, спасибо
sectors70 вне форума Ответить с цитированием
Старый 14.01.2013, 23:09   #6
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

В общем да, универсального и наверняка для всех программ нет варианта.

Но в частностях, которых подавляющее большинство, можно в лоб эмулировать Сtrl-C, Ctrl-V.
Копипасту разве только поля ввода пароля не поддерживают.
Smogg вне форума Ответить с цитированием
Старый 15.01.2013, 19:07   #7
sectors70
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 20
По умолчанию

Можно наверное и так. Но я тут подумал, что под Windows ведь можно было бы использовать SendMessage(hwnd, WM_COPY, 0, 0), например? Будет такое работать? Сейчас негде проверить просто.
sectors70 вне форума Ответить с цитированием
Старый 15.01.2013, 20:16   #8
sectors70
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 20
По умолчанию

Сделал эмуляцию Ctrl+C и Ctrl-V, но есть проблема. Дело в том, что пользователь будет нажимать какие-то забинденные горячие клавиши, например Alt+Q, что в сумме с Ctrl+C даёт какую то неведомую комбинацию и копирование в буфер не работает. Если сделать, чтоб пользователь нажимал, например, F2, то все работает отлично. Вариант с SendMessage почему-то не работает, но я и не уверен, что он должен.

Последний раз редактировалось sectors70; 15.01.2013 в 20:26.
sectors70 вне форума Ответить с цитированием
Старый 15.01.2013, 21:56   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

А WM_COPY кому шлете? Главному окну может оказаться недостаточно.
waleri вне форума Ответить с цитированием
Старый 16.01.2013, 20:35   #10
sectors70
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 20
По умолчанию

Да, я шлю главному окну. Я уже погуглил и понял, что для моей задачи самое оптимальное решение - эмулировать Ctrl+C и Ctrl+V. Правда реализовал я это средствами WinAPI. В принципе осталось найти как эмулировать нажатия под linux и готово . Спасибо всем за помощь
sectors70 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получал выделенный текст из любого внеш.программ Danik_SSS Общие вопросы Delphi 0 15.12.2012 11:24
Как скопировать выделенный текст из ячейки DBGrid через PopupMenu astecenko БД в Delphi 2 27.06.2012 10:19
Delphi WEBBROWSER. Как выделенный текст удлинить до края слова. AvRob Компоненты Delphi 1 18.02.2012 19:48
Заменить выделенный текст на свой в Блокноте Brother Win Api 6 13.11.2007 14:26
Выделенный текст в другом приложении Nez Win Api 9 09.04.2007 01:52