如何获取某些应用中的插入点坐标

haitaoHe 0 信誉分
2025-02-27T13:50:33.0366667+00:00

win32有一个API:getGUIThreadInfo,可以获取插入点的边框信息:rcCaret。

https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-getguithreadinfo

但是我发现,当我在word中输入后,以及使用方向键移动插入点,getGUIThreadInfo并不能及时(约1秒)的获取到正确的信息。

还有其它方法可以获取应用中插入点的位置信息吗?

期待您的帮助解答

Windows API - Win32
Windows API - Win32
一组适用于桌面和服务器应用程序的核心 Windows 应用程序编程接口 (API)。 以前称为 Win32 API。
135 个问题
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Jeanine Zhang-MSFT 11,106 信誉分 Microsoft External Staff
    2025-02-28T02:54:43.9766667+00:00

    你好

    欢迎来到Q&A中文论坛。

    getGUIThreadInfo并不能及时(约1秒)的获取到正确的信息。

    请问你是如何调用getGUIThreadInfo以获得实时插入点坐标的?如果是通过频繁的轮询调用, 我建议你可以尝试使用钩子比如WH_MOUSE_LLWH_KEYBOARD_LL, 用来监听即将发布到线程输入队列中的鼠标输入事件和键盘输入事件。这样仅在用户输入时获取插入点坐标。

    还有其它方法可以获取应用中插入点的位置信息吗?

    你可以尝试使用GetCaretPos获取插入点的客户端坐标,然后通过ClientToScreen将指定点的工作区坐标转换为屏幕坐标。

    你也可以使用UI自动化获得应用中插入点的位置信息。实现IUIAutomationTextPattern接口,提供对包含文本的控件的访问。

    Jeanine

    Thank you


你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。