Вставьте текст из редактирования в любое окно, где указатель мыши - PullRequest
3 голосов
/ 13 октября 2011

Как вставить текст из элемента управления «Правка» в любое окно, где находится указатель мыши, без использования буфера обмена и / или дескриптора окна.

Я использую Delphi 7.

1 Ответ

6 голосов
/ 13 октября 2011
  1. Позвоните GetCursorPos, чтобы узнать, где находится курсор.
  2. Звоните WindowFromPoint, чтобы найти окно под курсором.
  3. Отправьте сообщение EM_REPLACESEL, чтобы заменить выбор в этом окне. Если ничего не выбрано, текст будет вставлен в каретку.

Примечание: Будьте готовы к тому, что этот сбой случится чаще, чем удачный. Многие приложения не используют оконные средства редактирования. Для более надежного решения вы должны изучить UI Automation .


Вы попросили какой-нибудь код. Вот как это будет выглядеть:

var
  Pos: TPoint;
  Target: HWND;
...
if not GetCursorPos(Pos) then
  RaiseLastOSError;
Target := WindowFromPoint(Pos);
if Target<>0 then
  SendMessage(Target, EM_REPLACESEL, ord(True), LPARAM(PChar(Edit1.Text)));

Если окно под курсором не является окном редактирования, это, вероятно, будет доброкачественным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...