注册AppleEvents

时间:2015-05-13 07:27:35

标签: c applescript appleevents

我试图开始使用AppleEvents。我已经完成了这个简单的注册并处理了日志:

static OSErr HandleOpenApplication(const AppleEvent* event, AppleEvent* ev, SRefCon sr)
{
    LOG_HIGH("@@@@@@@@ Got Apple Event @@@@@@@");
    return 0;
}

static OSErr InstallAppleEventHandlers()
{
    OSErr err = 0;
    err = AEInstallEventHandler(typeWildCard, typeWildCard,
                                NewAEEventHandlerUPP(HandleOpenApplication), 0, false); // 1
    require_noerr(err, CantInstallAppleEventHandler);
CantInstallAppleEventHandler:
    LOG_HIGH("@@@@@@@@ Registered Apple Event with " << err <<" code @@@@@@@");
    return err;
} 

我已使用通配符标识符来获取所有事件。

运行我的应用程序后,我获得了成功注册的日志。

然后,我正在运行AppleScript来发送一个事件:

tell application "System Events" to get name of every process

tell application "System Events"
    tell process "MyApp"
        run
    end tell
end tell 

但是我没有在我的应用中收到该活动。我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

您编写的脚本会将AppleEvent发送到应用程序系统事件,即您要定位的应用程序。所以你需要做的就是将脚本改为:

tell application "MyApp" to launch

此外,您应该回复事件ascr/noop,而不是****/****(typewildcard / typewildcard)。