这个Applescript有什么问题?

我的应用程序具有一些基本的可用性。有一个方法(receivedInstantMessage)接受一个参数(消息)并将其传递给我的应用程序然后处理它。 以下AppleScript:
tell application "MyApp"
    receivedInstantMessage "This is a message"
end tell
完美的工作。我的应用程序显示一个包含消息的对话框(“这是一条消息”)。 我正在尝试设置它,以便当我向iChat发送IM时,它会运行一个AppleScript,将消息的内容发送到我的应用程序。我告诉iChat在收到消息时运行脚本,我知道该部分正在运行。我现在使用的脚本不起作用:
using terms from application "iChat"
    on message received theMessage from theBuddy for theChat
        tell application "MyApp"
            receivedInstantMessage theMessage                
        end tell
    end message received
end using terms from
收到邮件后没有任何反应。即使我从iChat替换消息变量(theMessage)并使用任意字符串,它仍然没有做任何事情。 我究竟做错了什么。我对applecript很新(通常是一个REALbasic编码器)。 [更新]:这似乎现在有效。一个简单的重启Mac固定的东西。很奇怪...     
已邀请:
只是一个语义细节:考虑脚本编写者正在向您的应用发送消息,而不是接收消息。是的,您的应用程序正在接收它们,但您选择的“receivedInstantMessage”术语是从您的应用程序而不是脚本编写者的角度出发的。 此外,在驼峰案例中有一个术语被认为是naff。 AppleScript术语可以(通常应该)包含空格。如果你真的想要做得恰到好处,你应该将术语分为名词和动词。 (其中名词是正确建模的对象,具有属性,动词是用于操纵它们的命令。在这种情况下,您可能需要发送消息“bla”,其中消息是具有发送者,接收者,频道等属性的对象。 send是一个将消息对象作为参数的命令 - 检查Snak的字典是否相当不错 - 但并不完美 - 实现)。 对不起,如果这听起来肛我已经开了很多年了,虽然我真的很感激开发人员添加Applecript支持时,我知道当我说构造不好的词典时,我代表所有的Applecripters,而且糟糕的术语选择令人沮丧和烦恼,特别是当应用程序获得更多时成熟,开发人员开始说“我知道AppleScript界面​​需要彻底改革,但我不想破坏现有的脚本!”。如果脚本界面变得更好,所有applescripters都更喜欢它,即使它破坏了现有的脚本。所以:现在做错了,但要准备好以后从根本上改进它。 :) 甚至Apple也有一些糟糕的术语,例如在iTunes中有一个updatePodcast和updateAllPodcasts命令。这是错误的,根据他们自己的技术说明2106 - 特别注意关于命名规则的部分..他们应该有播客对象和更新命令,这样你也可以做“删除每个名字包含的播客”之类的事情Ann Coulter“。(”谁的“条款是appleScript最酷的功能之一!)     

要回复问题请先登录注册