在dock上使用AppleScript为应用程序添加自定义菜单项

在dock上使用AppleScript为应用程序添加自定义菜单项,applescript,contextmenu,menuitem,dock,Applescript,Contextmenu,Menuitem,Dock,您可以编写AppleScript并将其另存为应用程序,然后将其放在dock上。但是,是否可以向其添加菜单项,以便在二次单击时显示这些菜单项?如果是,如何定义它们,以及如何定义它们的行为 谢谢你不能用Applescript来做这件事。将Applescript保存为应用程序实际上只需要删除运行脚本所需的脚本编辑器以及一些其他小更改。最后,它仍然只是一个脚本。如果您需要更多功能,那么您应该考虑使用Xcode创建基于Applescript的应用程序(以前称为Applescript Studio)。使用X

您可以编写AppleScript并将其另存为应用程序,然后将其放在dock上。但是,是否可以向其添加菜单项,以便在二次单击时显示这些菜单项?如果是,如何定义它们,以及如何定义它们的行为


谢谢

你不能用Applescript来做这件事。将Applescript保存为应用程序实际上只需要删除运行脚本所需的脚本编辑器以及一些其他小更改。最后,它仍然只是一个脚本。如果您需要更多功能,那么您应该考虑使用Xcode创建基于Applescript的应用程序(以前称为Applescript Studio)。

使用Xcode,请执行以下操作:

  • NIB文件->MainMenu.xib(双击)。这将打开界面生成器
  • 文件->新建…->可可->主菜单
  • 将主菜单的dockMenu链接到“文件所有者”(第二次单击主菜单->将dockMenu圆圈拖放到文件所有者)
  • 双击主菜单并编辑项目名称。将“发送操作”项链接到要执行的操作(与项目符号3中的方式相同)
  • 子弹4有点摇晃,因为我不记得它是怎么回事。我会给你一个链接,以便进一步阅读:。不过,将其与applescript链接应该不会有任何问题

    如果你能发布一个有效的解决方案,我将不胜感激

    比尔,
    朱哈

    我找到了我是怎么做到的。这适用于leopard和更早版本:它是用于shell命令的cocoa应用程序包装器。对于雪豹,您可以直接为苹果脚本执行

  • xcode->新项目…->应用程序->可可应用程序
  • (右窗格)NIB文件->(右键单击)添加->新建文件->Cocoa->目标C类->“runScript.m”
  • 修改runScript.h(右窗格):
  • 修改runScript.m:
  • NIB文件->MainMenu.xib(双击打开interface builder)
  • interface builder->tools->library(对象页面)->library cocoa-“对象和控制器”-->Object(将此蓝色立方体拖放到Main Menu.xib窗口)
  • 选择对象(您刚才添加的)->interface builder->tools->identity inspector->class->select runScript from drop down(这是您在2中创建的对象c类)
  • MainMenu.xib->(双击)MainMenu->(删除额外内容+)将“文件->新建”重命名为文件->运行Hello
  • 右键单击runHello->拖放“Actions:runHello”旁边的圆圈,以运行脚本->runHello(在MainMenu.xib中)
  • 在Mainmenu.xib窗口中:右键单击“文件所有者”->将dockMenu旁边的圆圈拖放到Mainmenu
  • 返回xcode->build->build并继续->保存所有
  • 现在,右键单击dock中的程序应该有“file->runHello”项

    您可以删除“Mainmenu.xib”中的窗口。NSTask还可以执行所有shell命令,而不仅仅是脚本

    在雪豹中有一个“applescript iAction”。您可以将“Cocoa应用程序”更改为“Applescript应用程序”

    br,

    Juha

    嗯,我想通过编辑应用程序内容的元数据是可能的。我不介意用XCode来做。关于我应该在那里使用什么API调用,有什么线索吗?只是补充一下:我在使用leopard,在snow leopard中,automator中应该有相同的拖放功能。。。是真的还是谣言?谢谢你的努力。我真的很感谢你的帮助。
    #import Cocoa/Cocoa.h // add gt and lt (does not show here)
    @interface runScript : NSObject {}
    -(IBAction)runHello:(id)sender;
    @end
    #import "runScript.h"
    @implementation runScript
    -(IBAction)runHello:(id)sender
    {
        NSTask *script=[[NSTask alloc] init];
        [script setLaunchPath:@"~/Desktop/hello.app/Contents/MacOS/hello"];
        [script launch];
    }