1

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

谢谢

4

3 回答 3

0

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

  1. xcode -> 新项目... -> 应用程序 -> 可可应用程序
  2. (右窗格)NIB 文件 ->(右键单击)添加 -> 新文件 -> Cocoa -> 目标 C 类 -> “runScript.m”
  3. 修改 runScript.h(右窗格):
#import Cocoa/Cocoa.h // add gt and lt (does not show here)
@interface runScript : NSObject {}
-(IBAction)runHello:(id)sender;
@end
  1. 修改 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];
}
  1. NIB 文件 -> MainMenu.xib(双击打开界面生成器)
  2. interface builder -> tools -> library (objects-page) -> library-cocoa-"objects & controllers" -> Object (将这个蓝色立方体拖放到 Main Menu.xib 窗口)
  3. 选择对象(您刚刚添加的)-> 界面构建器-> 工具-> 身份检查器-> 类-> 从下拉列表中选择 runScript(这是您在 2 中创建的对象 c 类)
  4. MainMenu.xib -> (双击) MainMenu -> (delete extra + ) rename "file-> new" 为 file->runHello
  5. 右键runHello -> 将“Actions:runHello”旁边的圆圈拖放到Run Script -> runHello(在MainMenu.xib中)
  6. 在 Mainmenu.xib 窗口中:右键单击“文件的所有者”-> 将 dockMenu 旁边的圆圈拖放到 MainMenu
  7. 返回 xcode -> 构建 -> 构建并运行 -> 全部保存

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

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

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

兄弟,
朱哈

于 2010-11-26T18:20:29.183 回答
0

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

于 2010-11-26T11:38:09.550 回答
0

使用 Xcode,执行以下操作:

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

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

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

兄弟,朱哈

于 2010-11-26T12:53:11.170 回答