如何获取输入光标的位置 Topic is solved

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

XMB-7
Posts: 16
Joined: 08 Jan 2023, 20:58
Contact:

如何获取输入光标的位置

Post by XMB-7 » 03 Jun 2023, 10:46

image.png
image.png (6.67 KiB) Viewed 1301 times
想知道有没有除了findtext之外的方法.
翻了翻文档, 找到了一个函数CaretGetPos, 以为能够返回输入光标的坐标, 但实际试了一下并不合预期, 而且也不知道它具体是干嘛的, 在哪里都显示No caret.

Code: Select all

!T::
{
    SetTimer WatchCaret, 100
    WatchCaret() {
        if CaretGetPos(&x, &y)
            ToolTip "X" x " Y" y, x, y - 20
        else
            ToolTip "No caret"
    }
}

WKen
Posts: 182
Joined: 21 Feb 2023, 00:01

Re: 如何获取输入光标的位置  Topic is solved

Post by WKen » 03 Jun 2023, 13:59

函数CaretGetPos对编辑器类有效,可能是窗口光标颜色的问题。
三点一线:

Code: Select all

#Requires AutoHotkey v2.0.2

CoordMode "Pixel", "Client"
SetTimer WatchCaret, 100
WatchCaret() {
    if !WinActive("A")
       return
    WinGetPos &X1, &Y1, &W, &H, "A"
    if PixelSearch(&xs, &ys, X1, Y1, X1+W, Y1+H, "0xFFFFFF")             ; 三点一线获得光标位置,颜色为FFFFFF,两点一线应该比较容易捕捉到
       if PixelSearch(&xs2, &ys2, xs, ys+10, xs, ys+10, "0xFFFFFF")
          if PixelSearch(&xs3, &ys3, xs, ys+16, xs, ys+16, "0xFFFFFF")
             ToolTip "X" xs " Y" ys
          else
             ToolTip "没有光标"
}

XMB-7
Posts: 16
Joined: 08 Jan 2023, 20:58
Contact:

Re: 如何获取输入光标的位置

Post by XMB-7 » 03 Jun 2023, 22:51

@WKen 非常感谢提供思路.
另外我这边测试CaretGetPos, 无论在浏览器里还是vscode里都不行, 只有在系统自带的记事本里才好使, 这也太鸡肋了. 请问它背后也是通过搜索颜色来实现的么, 那针对不同窗口的光标只好设置不同的光标颜色?

WKen
Posts: 182
Joined: 21 Feb 2023, 00:01

Re: 如何获取输入光标的位置

Post by WKen » 04 Jun 2023, 06:55

原理应该差不多,具体可能只有开发者知道吧,光标的长度可能是独一无二的,可以为PixelSearch设置颜色变化范围


Post Reply

Return to “请求帮助”