![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
![]()
Привет. Собственно, сабж. Нужно примерное следующее: пользователь выделяет текст в какой-либо программе, например в скайпе, нажимает горячую клавишу, которою обрабатывает моя программа, производит операции с текстом и заменяет его. То есть, чтобы пользователю не приходилось сначала выделять его, копировать в буфер обмена, нажимать горячую клавишу, потом вставлять обратно. Интересует, как это сделать, используя Qt, и возможно ли сделать это кроссплатформенно. Если нет, то нужно хотя бы под винду. Спасибо.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
При такой формулировке ответ "нет"
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
![]()
Вы про кроссплатформенность? Или про такую возможность в принципе? Я в принципе предполагал, что это невозможно реализовать кроссплатформенно, поэтому сразу оговорился про реализации хотя бы в Windows.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
И то и другое - универсальноге решения нет. Можно заточить под какието популярные программы.
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
![]()
ясно, спасибо
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
В общем да, универсального и наверняка для всех программ нет варианта.
Но в частностях, которых подавляющее большинство, можно в лоб эмулировать Сtrl-C, Ctrl-V. Копипасту разве только поля ввода пароля не поддерживают. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
![]()
Можно наверное и так. Но я тут подумал, что под Windows ведь можно было бы использовать SendMessage(hwnd, WM_COPY, 0, 0), например? Будет такое работать? Сейчас негде проверить просто.
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 20
|
![]()
Сделал эмуляцию Ctrl+C и Ctrl-V, но есть проблема. Дело в том, что пользователь будет нажимать какие-то забинденные горячие клавиши, например Alt+Q, что в сумме с Ctrl+C даёт какую то неведомую комбинацию и копирование в буфер не работает. Если сделать, чтоб пользователь нажимал, например, F2, то все работает отлично. Вариант с SendMessage почему-то не работает, но я и не уверен, что он должен.
Последний раз редактировалось sectors70; 15.01.2013 в 20:26. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
А WM_COPY кому шлете? Главному окну может оказаться недостаточно.
|
![]() |
![]() |
![]() |
#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 |