是文本输入框中那个一闪一闪的竖条的光标,不是鼠标位置,有时候鼠标和这个的位置是不一样的。
查了很多资料发现提供的都是获取鼠标位置的方法。
这个 win32gui.GetCaretPos()不知道是不是,但始终返回(0,0)。
1
Thymolblue 2020-12-28 20:15:11 +08:00
可以试一试 selenuim find element
|
2
zictos OP @Thymolblue #1 不是在网页里面
|
3
xupefei 2020-12-28 20:39:56 +08:00
用 GetGUIThreadInfo 的 pgui.hwndCaret 和 pgui.rcCaret
|
4
zictos OP 这段 c++代码经测试可用,可以用 python 调用,不过还是有一些程序无法获取。看来这个确实没有比较完美的解决方案:
https://blog.csdn.net/qq78442761/article/details/104110482 |
5
lcdtyph 2020-12-28 20:50:48 +08:00 via iPhone
如果是标准 win text editor 可以用 EM_GETSEL 窗口消息获取当前光标位置(或选区)
|
6
lxilu 2020-12-28 23:54:44 +08:00 via iPhone
文本光标;考虑 UI Automation
|
7
ysc3839 2020-12-29 01:29:42 +08:00 via Android
怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html
建议说说原始需求。 |
8
zictos OP @ysc3839 #7 的确没原始需求了,本来是打算每次按 ctrl+c 复制文本时直接在屏幕上的光标位置显示“复制成功”,因为有时候 ctrl+c 会偶尔有失效的情况,所以有时候保险起见会多次按 ctrl+c 。
我输入文字的时候为防止意外情况一般都会每隔一段时间就按一下 ctrl+c,比如在网站上发言以及一些不能自动保存的编辑器的时候。 但后来才想起来复制文本时并不一定存在“输入光标”,比如有时候网页上不能编辑的位置的文字复制时就没有“输入光标”。 所以直接在鼠标所在位置提示就行了,一开始主要是追求完美,当时屏幕显示文字方面等其他问题都搞定了,就差这个问题。 这种功能可能游戏脚本或者一些其他鼠标键盘的自动化脚本会有用到的需求,一般的确用不到。但“凭想象”来说只要系统提供这样的接口的话一般应该是可以实现,并不是什么特别复杂的功能。 |
9
Trim21 2020-12-29 06:42:10 +08:00
import pyautogui
r = pyautogui.position() print(r) |
11
VeryZero 2020-12-29 08:54:40 +08:00
这个貌似不太好完美实现,因为个人认为这个「光标」没有统一的实现,不同的应用实现机制不一样。
最直观的例子,win form 和浏览器获取方式就不一样 |
13
AndyAO 2020-12-29 09:56:50 +08:00
不过知道在 Win32 标准控件,或者实现某个接口的窗口中能稳定实现的方式也不错,有比没有好.
|
14
AndyAO 2020-12-29 09:57:28 +08:00
其实我也有这个需求,但感觉不值得花那么多时间,所以就直接在光标(鼠标)处显示了.
|
16
est 2020-12-29 10:09:49 +08:00
这个跟语言没关系吧。找个操作系统对应的 GUI 调用方式,直接撸 API 好了。
|
17
karatsuba 2020-12-29 10:13:48 +08:00
没有
|