这是一个艰难的:
我需要能够在屏幕上找到一个单词的位置和大小(它的框架)(它的第一次出现是足够的,从那里我应该可以得到下一个)。
例如,我希望能够在(但不限于)Word,Excel和PowerPoint for Mac以及Safari和其他人中检测单词位置。
解决方案应该尽可能快;我应该能够找到每秒至少5-6个字,并尽可能少地使用CPU时间。
这是我到目前为止的想法:
我的目标是根据包含段落文本的字符串,以正确的顺序获取段落中的所有单词框架。
提前感谢任何提示!
答案 0 :(得分:2)
作为起点,您可能需要查看QuickCursor's code。它通过AX Accessibility APIs从许多不同的应用程序中检索文本。现在,它不会抓取单词的像素位置,但它至少会返回与该UI元素中的文本关联的NSString。当然,这意味着有问题的应用程序必须支持这些API;我不知道MS Office套件会不会。此外,它仅支持可编辑元素,因此Safari中不可编辑的网页也不起作用。但它可能会为你提供一些想法的起点。
查看QCUIElement.{m,h}
,然后查看QCAppDelegate.m
(beginQuickCursorEdit:
)中的实现......他抽象的QCUIElement的实现似乎很简单:
QCUIElement *focusedElement = [QCUIElement focusedElement];
id value = focusedElement.value;
修改:啊哈!查看辅助功能检查器示例代码:UIElementInspector。它实际上可以在页面上获取元素的AXPosition。现在,它不是逐字逐句,而是我们越来越近了。它会告诉你文本块的x,y位置,以及文本块中包含的单词。
答案 1 :(得分:1)
这是可能的,但很难可靠地工作。您可以使用Spell Catcher's Direct Connect功能来查看示例。