1

尝试使用这部分代码

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

但是找不到从哪里导入 SystemEventsApplication 并且无法导入 SystemEvents.h

在此处找到此解决方案以编程方式使 Mac 进入睡眠状态

4

1 回答 1

2

要使用 Scripting Bridge,您需要从相关应用程序的脚本定义生成头文件。Scripting Bridge Programming Guide的Preparing to Code部分包含以下内容:

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

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

它接着说:

要创建头文件,您需要同时运行两个命令行工具(sdef 和 sdp),其中一个的输出通过管道传输到另一个。这是推荐的语法:

sdef /path/to/application.app | sdp -fh --basename应用程序名称

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

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

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

于 2013-06-23T00:09:31.630 回答