寻找Python库来获取文本光标位置。不是鼠标指针位置

问题描述 投票:0回答:1

我正在寻找一个可以帮助我的Python脚本,如何获取TEXT光标的位置?

我不是在寻找鼠标指针位置。 通常很多Python库都会帮你找到鼠标指针屏幕位置的坐标,但我不需要这个。

我需要文本光标,您可以在 Excel 单元格或 Windows 软件处方集的文本框中或 Web 处方集的文本框中找到它。

我正在用python 库“pyautogui”自动填充WINDOWS下的处方集,我需要知道文本光标是否位于该处方集的某个位置,以便在某个位置写入一些值。

请记住,鼠标指针可以停在屏幕的一角,当我运行“pyautogui”库的脚本以自动用数据填充处方集时,文本光标在该处方集的所有文本框中运行和设置数据。 此处方集位于 WINDOWS 应用程序中。

如果您可以帮助我并且想要编写执行此操作的 python 脚本,请在发布之前先在您的计算机上检查它。谢谢。

python position cursor pyautogui
1个回答
0
投票

像 pyautogui 这样的库本身不支持确定 Windows 应用程序或表单中文本光标(插入符号)的位置。但是,可以通过 ctypes 或 pywin32 Python 库使用 Windows API 来完成。

我现在在 Mac 上,所以我无法对此进行测试,但我认为这应该能够为您提供聚焦窗口中的文本光标位置:

import ctypes
from ctypes import wintypes`

def get_caret_position():
    # Load required user32 DLL
    user32 = ctypes.windll.user32

# Structures for caret position
class POINT(ctypes.Structure):
    _fields_ = [("x", wintypes.LONG), ("y", wintypes.LONG)]

caret_pos = POINT()

# Get the caret position
success = user32.GetCaretPos(ctypes.byref(caret_pos))
if success:
    return caret_pos.x, caret_pos.y
else:
    return None

if __name__ == "__main__":
    position = get_caret_position()
    if position:
        print(f"The caret position is: {position}")
    else:
        print("Could not retrieve caret position.")`

'GetCaretPos' 是一个 Windows API 函数,用于检索插入符相对于活动窗口的当前位置。我们将其保存到

POINT
来存储插入符位置的 x 和 y 坐标。

看起来其他人已经问了类似的问题并且查看答案,如果另一个线程创建了窗口,则此工作可能会出现一些问题。您可能还需要查看该答案。

© www.soinside.com 2019 - 2024. All rights reserved.