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

Posted

技术标签:

【中文标题】在 Dock 上使用 AppleScript 为应用程序添加自定义菜单项【英文标题】:Adding custom menu items using AppleScript for the application when on the dock 【发布时间】:2010-11-26 09:39:54 【问题描述】:

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

谢谢

【问题讨论】:

【参考方案1】:

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

    xcode -> 新项目... -> 应用程序 -> Cocoa 应用程序 (右窗格)NIB 文件 ->(右键单击)添加 -> 新文件 -> Cocoa -> 目标 C 类 -> "runScript.m" 修改 runScript.h(右窗格):
#import Cocoa/Cocoa.h // add gt and lt (does not show here)
@interface runScript : NSObject 
-(IBAction)runHello:(id)sender;
@end
    修改runScript.m:
#import "runScript.h"
@implementation runScript
-(IBAction)runHello:(id)sender

    NSTask *script=[[NSTask alloc] init];
    [script setLaunchPath:@"~/Desktop/hello.app/Contents/MacOS/hello"];
    [script launch];
    NIB 文件 -> MainMenu.xib(双击打开界面生成器) interface builder -> tools -> library (objects-page) -> library-cocoa-"objects & controllers" -> Object(将此蓝色立方体拖放到 Main Menu.xib 窗口) 选择对象(您刚刚添加的)-> 界面构建器-> 工具-> 身份检查器-> 类-> 从下拉列表中选择 runScript(这是您在 2 中创建的对象 c 类) MainMenu.xib -> (双击) MainMenu -> (delete extra + ) rename "file-> new" 为 file->runHello 右键runHello -> 将“Actions:runHello”旁边的圆圈拖放到Run Script -> runHello(在MainMenu.xib中) 在 Mainmenu.xib 窗口中:右键单击“文件的所有者”-> 将 dockMenu 旁边的圆圈拖放到 MainMenu 返回 xcode -> 构建 -> 构建并运行 -> 全部保存

现在dock中的程序在右键单击时应该有“file->runHello”项。

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

在 Snow Leopard 中有一个“applescript IBAction”。您可以将“Cocoa 应用程序”更改为“Applescript 应用程序”。

br, 朱哈

【讨论】:

感谢您的努力。我真的感谢您的帮助。【参考方案2】:

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

【讨论】:

好吧,我认为可以通过编辑应用内容的元数据来实现。我不介意用 XCode 来做。关于我应该在那里使用哪些 API 调用的任何线索?【参考方案3】:

使用 Xcode,执行以下操作:

    NIB 文件 -> MainMenu.xib(双击)。这将打开界面生成器。 file -> new... -> Cocoa -> mainMenu 将 mainMenu 的 dockMenu 链接到“文件的所有者”(第二次单击 mainMenu -> 将 dockMenu-circle 拖放到文件的所有者) 双击主菜单并编辑项目名称。将“发送操作”项链接到您要执行的操作(与项目符号 3 中的方式相同)。

Bullet 4 有点摇摇欲坠,因为我不记得它是怎么回事。我会给你一个链接以供进一步阅读:http://cocoadevcentral.com/articles/000036.php。不过,将它与 applescript 链接应该没有任何问题。

如果您能发布一个可行的解决方案,我将不胜感激(我的意思是当您让它发挥作用时)。

br, 朱哈

【讨论】:

只是补充一下:我使用的是豹,在雪豹中,自动机中应该有相同的拖放功能......是真的还是谣言?

以上是关于在 Dock 上使用 AppleScript 为应用程序添加自定义菜单项的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在没有 Dock 图标的情况下将程序作为 AppleScript 程序的子进程运行?

从 Dock 中隐藏 Mac 应用程序

使用 Bash 脚本自定义 macOS 的 Dock

Applescript 从码头中删除项目

如何为用 AppleScript 编写的脚本应用程序设置应用程序图标?

Applescript - 在 MacOS Monterey 上设置系统偏好设置底座大小滑块的值