доступ из одного приложения к выделенному тексту в другом приложении
есть мое приложение, постоянно находящееся в памяти. Если в любом окне
любого приложения, позволяющем вводить и редактировать текст, выделить часть
текста/весь текст и нажать определенный HotKey, мое приложение должно
произвести над выделенным текстом определенные операции и поместить вместо
первоначального. И вот - как получить этот выделенный текст из другого
приложения и потом поместить обратно с заменой выделенного?
1. Определить HWND окна в котором находиться текст. Для этого надо использовать функцию GetForegroundWindow
2. Получить текст из этого окна
3. Произвести его обработку
4. Поместить результат обратно в окно
Получать текст и возвращать его обратно с помощью SendMessage.
Если все содержимое окна - то WM_GETTEXT и WM_SETTEXT, если же нужен выделенный текст, то EM_GETSEL и EM_SETSEL.
Можно так же использовать вариант с хуком клавиатуры, если вышеописанный способ не пройдет
Но! Потом невозможно текст вставить! Ни SendMessage (<foreground window handle>,WM_PASTE,0,0), ни keybd_event на Shift+Ins не работают! В чем грабли?
Тоже вариант, но как-то некрасиво использовать для своих целей буфер обмена. А вдруг у пользователя там важные данные, а ты их гробишь. Поэтому лучше изменить логику программы, если можно. Т.е. пользователь копирует данные в буфер, жмет хот кей, а затем вставляет модифицированный текст в нужное ему месту. И пользователю все понятно, да и тебе легко будет реализовать
On 2001-08-31 15:57, AleX NeWMaN wrote:
А вдруг у пользователя там важные данные, а ты их гробишь</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Это не проблема, состояние буфера всегда можно сохранить... Да и такой вариант, как ты предложил, довольно геморроен для юзера...