无法导入SystemEventsApplication

时间:2013-06-21 23:26:40

标签: cocoa

尝试使用此部件代码

-(IBAction)goAway:(id)sender{
    SystemEventsApplication *systemEvents = [SBApplication applicationWithBundleIdentifier:@"com.apple.systemevents"];
    [systemEvents sleep];
}

但无法从导入SystemEventsApplication的位置找到并且无法导入SystemEvents.h

在此处Programmatically put a Mac into sleep

找到此解决方案

1 个答案:

答案 0 :(得分:2)

要使用Scripting Bridge,您需要从相关应用程序的脚本定义生成头文件。 “脚本桥编程指南”的Preparing to Code部分引导如下:

  

在开始为项目编写任何Scripting Bridge代码之前,您应该完成以下几个步骤:

     
      
  1. 为您的代码发送消息的所有可编写脚本的应用程序生成头文件。
  2.   
  3. 将这些文件添加到您的项目中。
  4.   
  5. 在标题或实现文件中,为生成的头文件添加#import语句。
  6.   
  7. 将Scripting Bridge框架添加到您的项目中。
  8.   

接着说:

  

要创建头文件,您需要运行两个命令行工具-sdef和sdp-together,一个管道输出到另一个管道。这是推荐的语法:

     

sdef /path/to/application.app | sdp -fh --basename applicationName

因此,对于使用系统事件的脚本,您将运行:

sdef /System/Library/CoreServices/System\ Events.app | sdp -fh --basename SystemEvents

这将生成SystemEvents.h,其中包含SystemEventsApplication的定义,然后您可以将其包含在项目中。