Python 能获取光标(非鼠标)位置吗?

2020-12-28 19:57:19 +08:00
 zictos

是文本输入框中那个一闪一闪的竖条的光标,不是鼠标位置,有时候鼠标和这个的位置是不一样的。
查了很多资料发现提供的都是获取鼠标位置的方法。

这个 win32gui.GetCaretPos()不知道是不是,但始终返回(0,0)。

3291 次点击
所在节点    Python
17 条回复
Thymolblue
2020-12-28 20:15:11 +08:00
可以试一试 selenuim find element
zictos
2020-12-28 20:34:34 +08:00
@Thymolblue #1 不是在网页里面
xupefei
2020-12-28 20:39:56 +08:00
用 GetGUIThreadInfo 的 pgui.hwndCaret 和 pgui.rcCaret
zictos
2020-12-28 20:48:17 +08:00
这段 c++代码经测试可用,可以用 python 调用,不过还是有一些程序无法获取。看来这个确实没有比较完美的解决方案:
https://blog.csdn.net/qq78442761/article/details/104110482
lcdtyph
2020-12-28 20:50:48 +08:00
如果是标准 win text editor 可以用 EM_GETSEL 窗口消息获取当前光标位置(或选区)
lxilu
2020-12-28 23:54:44 +08:00
文本光标;考虑 UI Automation
ysc3839
2020-12-29 01:29:42 +08:00
怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html
建议说说原始需求。
zictos
2020-12-29 01:49:50 +08:00
@ysc3839 #7 的确没原始需求了,本来是打算每次按 ctrl+c 复制文本时直接在屏幕上的光标位置显示“复制成功”,因为有时候 ctrl+c 会偶尔有失效的情况,所以有时候保险起见会多次按 ctrl+c 。
我输入文字的时候为防止意外情况一般都会每隔一段时间就按一下 ctrl+c,比如在网站上发言以及一些不能自动保存的编辑器的时候。
但后来才想起来复制文本时并不一定存在“输入光标”,比如有时候网页上不能编辑的位置的文字复制时就没有“输入光标”。
所以直接在鼠标所在位置提示就行了,一开始主要是追求完美,当时屏幕显示文字方面等其他问题都搞定了,就差这个问题。

这种功能可能游戏脚本或者一些其他鼠标键盘的自动化脚本会有用到的需求,一般的确用不到。但“凭想象”来说只要系统提供这样的接口的话一般应该是可以实现,并不是什么特别复杂的功能。
Trim21
2020-12-29 06:42:10 +08:00
import pyautogui

r = pyautogui.position()
print(r)
Trim21
2020-12-29 06:45:01 +08:00
@Trim21 #9 看了 8 楼了回复理解错了,以为是想找鼠标位置,无视我...
VeryZero
2020-12-29 08:54:40 +08:00
这个貌似不太好完美实现,因为个人认为这个「光标」没有统一的实现,不同的应用实现机制不一样。

最直观的例子,win form 和浏览器获取方式就不一样
AndyAO
2020-12-29 09:56:13 +08:00
@VeryZero #9
同意!这个需求可能是根本无法实现的,或者说实现方法非常的繁琐.
AndyAO
2020-12-29 09:56:50 +08:00
不过知道在 Win32 标准控件,或者实现某个接口的窗口中能稳定实现的方式也不错,有比没有好.
AndyAO
2020-12-29 09:57:28 +08:00
其实我也有这个需求,但感觉不值得花那么多时间,所以就直接在光标(鼠标)处显示了.
AndyAO
2020-12-29 09:57:58 +08:00
@zictos #4 刚看到 4 楼,有一些程序无法获取是正常的,如果能够获取反而是不正常的.
est
2020-12-29 10:09:49 +08:00
这个跟语言没关系吧。找个操作系统对应的 GUI 调用方式,直接撸 API 好了。
karatsuba
2020-12-29 10:13:48 +08:00
没有

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/739757

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX