|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.01.2013, 22:16 | #1 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
Как заменить выделенный пользователем текст в любом приложении?
Привет. Собственно, сабж. Нужно примерное следующее: пользователь выделяет текст в какой-либо программе, например в скайпе, нажимает горячую клавишу, которою обрабатывает моя программа, производит операции с текстом и заменяет его. То есть, чтобы пользователю не приходилось сначала выделять его, копировать в буфер обмена, нажимать горячую клавишу, потом вставлять обратно. Интересует, как это сделать, используя Qt, и возможно ли сделать это кроссплатформенно. Если нет, то нужно хотя бы под винду. Спасибо.
|
13.01.2013, 22:59 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
При такой формулировке ответ "нет"
|
13.01.2013, 23:10 | #3 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
Вы про кроссплатформенность? Или про такую возможность в принципе? Я в принципе предполагал, что это невозможно реализовать кроссплатформенно, поэтому сразу оговорился про реализации хотя бы в Windows.
|
14.01.2013, 08:38 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
И то и другое - универсальноге решения нет. Можно заточить под какието популярные программы.
|
14.01.2013, 13:07 | #5 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
ясно, спасибо
|
14.01.2013, 23:09 | #6 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
В общем да, универсального и наверняка для всех программ нет варианта.
Но в частностях, которых подавляющее большинство, можно в лоб эмулировать Сtrl-C, Ctrl-V. Копипасту разве только поля ввода пароля не поддерживают. |
15.01.2013, 19:07 | #7 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
Можно наверное и так. Но я тут подумал, что под Windows ведь можно было бы использовать SendMessage(hwnd, WM_COPY, 0, 0), например? Будет такое работать? Сейчас негде проверить просто.
|
15.01.2013, 20:16 | #8 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
Сделал эмуляцию Ctrl+C и Ctrl-V, но есть проблема. Дело в том, что пользователь будет нажимать какие-то забинденные горячие клавиши, например Alt+Q, что в сумме с Ctrl+C даёт какую то неведомую комбинацию и копирование в буфер не работает. Если сделать, чтоб пользователь нажимал, например, F2, то все работает отлично. Вариант с SendMessage почему-то не работает, но я и не уверен, что он должен.
Последний раз редактировалось sectors70; 15.01.2013 в 20:26. |
15.01.2013, 21:56 | #9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
А WM_COPY кому шлете? Главному окну может оказаться недостаточно.
|
16.01.2013, 20:35 | #10 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
Да, я шлю главному окну. Я уже погуглил и понял, что для моей задачи самое оптимальное решение - эмулировать Ctrl+C и Ctrl+V. Правда реализовал я это средствами WinAPI. В принципе осталось найти как эмулировать нажатия под linux и готово . Спасибо всем за помощь
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как получал выделенный текст из любого внеш.программ | 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 |