gpt4 book ai didi

cocoa - 调用另一个程序的函数?

转载 作者:行者123 更新时间:2023-12-03 16:20:04 25 4
gpt4 key购买 nike

所以我有这个我非常喜欢的程序,但它不支持 Applescript。我想让它自动化一点。现在,我知道我可以使用 applescript 告诉程序告诉菜单告诉子菜单告诉 menuitem 激活或其他什么,但坦率地说,无论如何我不太喜欢 applescript。

当我在 IB 中打开 NIB 文件时,我可以看到正在发送到 FirstResponder 的消息;例如,“复制”菜单项发送“copy:”。有什么方法可以让我直接从另一个程序调用它吗?

最佳答案

没有。你知道,它被称为 protected 内存是有原因的。另一个程序与您的应用程序完全隔离。有多种方法可以将代码放入其他应用程序中,但是(a)这是非常不可取的(b)需要root权限,这意味着应用程序的其余部分需要坚如磐石,并且(c)编写这样的代码是一门黑术需要了解操作系统内核接口(interface)、虚拟内存管理、ABI、链接器/加载器的内部结构、汇编器编程以及运行参数和应用程序运行的特定处理器的其他细节。

确实,AppleEvents 和其他此类 IPC 机制的存在是有原因的。

您的其他替代方案(老实说,所有这些都有点hacky,并且给您带来相当大的负担,以确保目标应用程序处于您想要/期望的状态)访问您正在寻找的数据是:

  1. 来自 ApplicationServices 框架的辅助功能 API,您可以通过它遍历 UI 树以直接从需要的位置获取文本,或者可以激活菜单项。不过,您的应用的访问权限必须由用户明确授予(尽管这与 UI 脚本的要求非常相似)。
  2. 您可以使用 CoreGraphics API(再次在 ApplicationServices 框架内)将键盘事件直接发送到目标应用程序(或仅发送到系统)。这意味着发送四个事件:Command-down、C-down、C-up、Command-up。

这些都不理想。老实说,最好的方法是查看您的需求,并找出如何通过以某种方式更改这些需求来最好地解决问题,即不要直接获取某些内容,而是要求用户提供一些输入等。

关于cocoa - 调用另一个程序的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/866094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com