将编辑中的文本插入鼠标指针所在的任何窗口

时间:2011-10-12 20:04:02

标签: delphi text insert

如何将Edit控件中的文本插入鼠标指针所在的任何窗口,而不使用剪贴板和/或窗口句柄。

我正在使用Delphi 7。

1 个答案:

答案 0 :(得分:6)

  1. 调用GetCursorPos以找出光标所在的位置。
  2. 调用WindowFromPoint查找光标下的窗口。
  3. 发送EM_REPLACESEL消息以替换该窗口中的选择。如果未选择任何内容,则文本将插入插入符号。
  4. 注意:为此做好准备比成功更常见。许多应用程序不使用窗口编辑控件。要获得更强大的解决方案,您应该查看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)));
    

    如果光标下方的窗口不是编辑窗口,这可能是良性的。