【问题标题】:Send Apple Event from Windows?从 Windows 发送 Apple 事件?
【发布时间】:2009-07-08 12:11:24
【问题描述】:

我儿子有一个 MacOS 9 盒子,他从基于 Leopard 的 MacBook 向该盒子发送远程 AppleEvents。有什么方法可以通过 TCP/IP 从我的 Windows 7 Toshiba 以编程方式发送远程 AppleEvents?

【问题讨论】:

    标签: windows-7 tcp macos


    【解决方案1】:

    如果有帮助,apple events are sent on port 3031 via TCP/UDP

    从高层来看,苹果事件有四个部分:

    1. 数据聚合 API(数据请求被放入不透明的内存结构中)。就目前而言,这个 API 冗长且使用起来很痛苦。谢天谢地,您可以使用具有更好数据聚合工具的语言
    2. 转换/序列化 - 不透明的数据结构被转换为可以序列化并传输到另一个进程的东西,对于相同的机器事件,这可能是空序列化
    3. Transport 将数据从一个进程传输到另一个进程。单台机器可能只是将数据的副本排入队列。远程机器通过网络协议进行传输,该协议可以是 TCP/IP(但它也适用于 AppleTalk)并且可能需要身份验证。
    4. 反序列化/转换

    您很可能需要执行第 2、3 和 4 步。如果您不关心获取任何信息,则可以跳过第 4 步,因为已发送事件中的标志之一是“无回复”。

    AE 数据模型中的类型相对较少。我会在你的 OS X 机器上编写代码来发送每种类型,并在发送数据包时对其进行逆向工程。为了加快进程,您可能希望在 OS X 机器上使用appscript,它可以让您从 Ruby、Objective C 或 Python 发送事件。

    【讨论】:

      【解决方案2】:

      使用 tcpdump 或 Wireshark 之类的工具来嗅探 MacBook 和 MacOS 9 机器之间的数据包。这将告诉您 AppleEvent 在网络上的样子。

      然后使用您在 Windows 上选择的编程环境复制这些数据包。

      我建议将您编写的代码打包到一个库中,以便在其他应用程序中重复使用。

      祝你好运 - 这可能很棘手!

      【讨论】:

      • 是的,我刚刚阅读了一些关于 AE 记录结构的 ADC 文档。这将是一段有趣的旅程。
      【解决方案3】:

      如果您在谈论咆哮通知,那么有一些库可以使用它。例如,这里是 ruby 的咆哮库

      【讨论】:

      • 好主意,但 MacOS 9 没有实现咆哮,AFAICT。
      猜你喜欢
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      相关资源
      最近更新 更多