如何获取输入光标的位置

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: 如何获取输入光标的位置

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

Post by thqby » 04 Jun 2023, 21:39

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

Post by WKen » 04 Jun 2023, 06:55

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

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

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

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

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

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 "没有光标"
}

如何获取输入光标的位置

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

image.png
image.png (6.67 KiB) Viewed 1468 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"
    }
}

Top