Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Bảo Trì Máy Tính

Hiểu về AE Server trên Mac: Nó là gì và tại sao quan trọng?

AE Server trên Mac là gì?

Khi làm việc với nhiều Mac khác nhau, việc chuyển từ máy này sang máy khác chỉ để hoàn thành các tác vụ đơn giản là rất phiền toái. Ví dụ, in tài liệu trên một Mac khác nghĩa là bạn phải sao chép file sang máy đó trước, sau đó đăng nhập vào Mac kia để in. Điều này xảy ra khi file không thể mở trên Mac của bạn hoặc ứng dụng cần thiết để chạy file đã lỗi thời.

Sao chép file sang máy khác quá rắc rối, đặc biệt khi liên quan đến nhiều file. May mắn thay, Apple đã让一切变得更简单,通过AppleScript和远程Apple事件在同一网络上控制另一台Mac。得益于这些技术,Mac用户现在可以远程访问、启动应用程序和执行基本任务。用户不必离开座位就能收听iTunes、使用Messages应用发送消息或发送邮件联系他人。

远程访问在您家里或办公室有两台或更多Mac时非常有用。虽然您可以使用“共享”功能远程控制同一网络上的另一台Mac,但使用AppleScript命令和AE Server会快得多。而且,您不需要打开“共享屏幕”功能即可做到这一点。

Mẹo chuyên nghiệp: Quét Mac để tìm sự cố hiệu suất, file rác, ứng dụng有害和安全威胁
这些可能会导致系统问题或性能变慢。

Apple Event(Apple事件)是什么?

Apple事件是Mac OS中基于消息的进程间通信机制,首次出现在System 7中,此后所有经典Mac OS版本和macOS都支持。Apple事件描述“高级”事件,如“打开文档”或“打印文件”,而早期的操作系统仅支持更基本的事件,即“点击”和“按键”。Apple事件构成了Mac OS脚本系统——开放脚本架构(其主要语言为AppleScript)的基础。

起点是一种动态类型、可扩展的描述符格式,称为AEDesc,它只是一个指定数据类型的OSType代码,连同一块依赖类型的数据。例如,OSType代码inte表示数据是大端格式的四字节有符号整数。

除了各种常见简单类型的预定义类型代码外,还有两种预定义的结构化描述符类型:AERecord(数据类型为reco,即记录)和AEList(类型为list,即列表或数组)。它们的内部结构包含递归嵌套的AEDesc,而AERecord还将每个元素与唯一的记录字段ID(一个OSType)关联。Apple事件管理器提供API调用来构建这些结构、提取其内容并查询它们所持有的内容类型。

Apple事件管理器还支持强制转换,可将AEDesc从一种数据类型转换为另一种。除了标准强制转换(例如整数和实数类型之间)外,应用程序还可以安装自己的强制转换处理程序回调,以处理自定义数据类型的转换。

一个真正的Apple事件是一个AERecord,其字段取决于事件的目的。此外,它还有属性(不同于记录字段,现在称为事件的参数),这些属性来自Apple事件管理器预定义的一组。这些属性指定事件要做什么(通过事件类和事件ID)、事件要发送到的目标地址(可以是本地或远程机器上的进程)以及处理它的各种其他选项。远程机器最初必须通过AppleTalk连接,但Mac OS 9增加了通过TCP/IP连接的选项。

将Apple事件发送到目标进程后,发送进程可以选择接收回复Apple事件。这可以包含目标返回的关于原始事件处理的各种信息,包括指示成功/失败的错误代码、原始事件请求的任何信息和/或其他适当信息。

Apple事件是AppleEvent对象模型的基础,后者又是OSA和AppleScript的基础。截至2016年,Apple事件管理器API的官方实现可用于C及其后代(包括C++)。通过Cocoa API,还为Objective-C和Swift提供了官方绑定。其他语言也存在非官方绑定(限制程度不一),包括Perl、UserTalk、Ruby和Python。

AE Server是什么?

如果您注意到AE Server在后台运行但不熟悉此功能,您可能会问:我的Mac上的AE Server是什么?

AE Server,也称为AppleEvents Server,处理macOS上的远程Apple事件。这使得其他Mac上的应用程序能够向本地计算机发送Apple事件。请检查系统偏好设置 > 共享,查看远程Apple事件是否已开启。您可以在macOS辅助功能权限面板中访问AEServer:

系统偏好设置 > 安全性与隐私 > 隐私 > 辅助功能 > AEServer

这看起来可能很复杂,但实际上比听起来简单得多。AppleScript是macOS内置的用户级脚本系统,允许Mac用户自动化重复任务、扩展应用程序功能,甚至使用相对简单的语言创建独立应用程序。AppleScript通过一种称为Apple事件的简单消息系统与macOS和目标单个应用程序通信。

AE Server的作用是接收并执行AppleScript,然后将其发送到另一台Mac。仅发送AppleScript不足以执行任务,还需要接收计算机通过远程Apple事件批准。

您的Mac可以接受来自其他Mac上运行的应用程序的Apple事件。这些是在macOS上执行的任务,例如“打开此文档”或“打印此文档”。开启远程Apple事件后,另一台Mac上运行的AppleScript可以远程控制您的本地Mac或执行打印文档、打开应用程序等任务。

对于运行macOS Catalina的Mac,针对远程系统上程序的Apple事件和AppleScript应由该远程系统上的同一用户进行身份验证。否则,用户将收到procNotFound错误。要允许远程Apple事件以任何用户会话为目标,请在服务器的终端中运行以下命令:

defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false

然后在系统偏好设置 > 共享中禁用并重新启用远程Apple事件。

Apple事件管理器是什么?

Apple事件管理器是开放脚本架构(OSA)的一部分,为应用程序发送和响应Apple事件以及使其操作和数据可供AppleScript脚本使用提供便利。有关相关API参考,请参阅开放脚本架构参考。

Apple事件是一种进程间消息类型,可指定复杂操作和数据。Apple事件提供数据传输和事件分发机制,可用于单个应用程序内部、同一计算机上的应用程序之间,以及通过网络连接的不同计算机上的应用程序之间。

应用程序通常使用Apple事件向其他应用程序请求服务和信息,或响应此类请求提供服务和信息。所有通过人机界面工具箱(Carbon应用程序)或Cocoa应用程序框架向用户呈现图形界面的应用程序,如果合适,都应能响应Mac OS发送的某些事件。这些包括打开应用程序(或启动)、重新打开、打开文档、打印文档和退出事件。

一些Apple事件管理器函数标记为线程安全——对于所有其他函数,您应仅在主线程上调用它们。

有关利用Apple事件管理器的技术概述,请参阅AppleScript概述。有关处理Apple事件的信息(包括Mac OS发送的事件),请参阅《Apple事件编程指南》中的“响应Apple事件”。有关Apple事件中使用的各个四字符代码的信息,请参阅《AppleScript术语和Apple事件代码参考》。

Apple事件管理器由AE框架实现,它是核心服务框架的子框架。您不直接链接AE框架——通常链接Carbon框架(其中包含它)。某些Apple事件定义仅对Carbon框架的客户端可用,例如HIToolbox框架中的AEInteraction.h。

AE框架不强制连接到窗口服务器。这允许使用Apple事件的守护进程和启动项在注销后继续工作。

如何在Mac上允许远程Apple事件

您的Mac可以接受来自其他计算机上运行的应用程序的Apple事件。Apple事件是在Mac上执行的任务,例如“打开此文档”或“打印”。

开启远程Apple事件后,另一台Mac上运行的AppleScript程序可以与您的Mac交互。例如,该程序可以打开并打印位于您Mac上的文档。

  1. 在您的Mac上,选择苹果菜单 > 系统偏好设置,然后点击共享。
  2. 勾选远程Apple事件复选框。
  3. 指定谁可以发送事件:
  • 所有用户:您计算机的任何用户和网络上的任何人都可以发送事件。
  • 仅这些用户:点击添加按钮,然后选择谁可以发送事件。“用户与群组”包括您计算机的所有用户。“网络用户和网络群组”包括网络上的人员。

如何在Mac上启用AE Server

要指示网络上的另一台Mac,您需要AppleScript和远程Apple Server才能工作。AppleScript包含您希望另一台Mac执行的任务指令,而AE Server授权并执行这些指令。您可以使用这些功能让另一台Mac关机、播放歌曲、访问网站或显示警报。

要在Mac上启用远程Apple Server或AE Server,请按以下步骤操作:

  1. 在您的Mac或您想要远程控制的Mac上,点击苹果菜单,然后选择系统偏好设置。
  2. 点击共享,然后勾选远程Apple事件复选框。
  3. 指定可以发送事件的用户:
  • 所有用户:您计算机上的任何用户和网络上的任何人都可以向您的Mac发送事件。
  • 仅这些用户:点击添加(+)按钮,然后选择可以发送事件的用户。“用户与群组”指您计算机上的所有用户。“网络用户和网络群组”指网络上的人员。

完成这些步骤后,您指定的用户现在可以向您的Mac发送AppleScript。您仍然需要使用该Mac的管理员用户名和密码登录以验证AppleScript。

但在运行AppleScript之前,请先使用Mac清理软件清理计算机,以确保计算机处于最佳性能状态。

与所有共享功能一样,只有在您确定需要时才应启用远程Apple事件。知道您Mac的IP地址以及用户名和密码的恶意第三方可能会窃取您Mac上的信息、劫持您的设备或覆盖您的会话。如果您不需要向另一台Mac发送指令,最好保持此功能禁用,以关闭所有不必要的攻击途径。

要禁用远程Apple Server,您可以使用共享菜单关闭它(苹果菜单 > 系统偏好设置 > 共享 > 远程Apple事件),或在终端中输入以下命令:

/usr/bin/sudo /bin/launchctl disable system/com.apple.AEServer

重新启动计算机以使更改生效。您的AE Server现在应该已禁用。

如何编写AppleScript

启用远程Apple Server只是方程式的一部分。接下来,您需要编写包含您希望Mac执行的指令的AppleScript。为此,您需要使用AppleScript编辑器或脚本编辑器(位于访达 > 实用工具下)。打开编辑器后,您可以通过点击文件 > 新建来编写脚本。

以下是一些您可以尝试的脚本:

让Mac进入睡眠

tell application "Finder" of machine "eppc://目标Mac的IP地址"
sleep
end tell

打开iTunes

tell application "iTunes" of machine "eppc://目标Mac的IP地址"
play
end tell

退出iTunes

tell application "iTunes" of machine "eppc://目标Mac的IP地址"
stop
end tell

启动Safari

tell application "Safari" of machine "eppc://目标Mac的IP地址"
activate
end tell

退出Safari

tell application "Safari" of machine "eppc://目标Mac的IP地址"
quit
end tell

创建这些AppleScript后,您可以将它们保存在Mac上,在需要时运行。您需要输入目标Mac的用户名和密码来执行AppleScript。