我希望在任何OSX应用程序中从用户当前关注的任何文本框中获取文本。我想这在完全一般的情况下是不可能的(如果某个应用程序使用一些低级图形调用实现一个完全自定义的文本框?)但我很乐意找到一个常见情况的解决方案,其中文本框是一些通用的Cocoa元件。
答案 0 :(得分:1)
您可以使用辅助功能API或AppleScript,但两者都使用GUI操作形式,两者都不是100%。
Accessibility API允许您从Accessibility API的角度检查给定应用程序的UI。它可能看不到一切。 您基本上需要使用Core Foundation C API来完成这一部分,而您将学会喜欢的核心课程是AXUIElementRef。 请注意,坐标通常位于左上角的屏幕硬件坐标中。 (与Cocoa使用的相反)
Your code will largely consist of layers of conditionals.
if (blablabla == kAXErrorSuccess) {
// do the next bit
}
在开始之前,您需要该应用获得用户批准才能控制其他应用。
然后你将获得应用程序,并开始解析其可访问性暴露的界面表示。
AX API根本不会显示某些应用和流程以及UI元素。
另一个现实的选择是AppleScript。 这同样尴尬。 即使应用程序不是可编写脚本的,GUI也是,但它并不漂亮。
这两种方法都不是沙箱。