Регистрация на Apple Events

Я пытаюсь начать работу с 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 

Но я не получаю событие в своем приложении. Что мне не хватает? Спасибо!


person Sanich    schedule 13.05.2015    source источник


Ответы (1)


Сценарий, который вы напишете, отправит событие AppleEvent в приложение System Events, то есть в приложение, на которое вы ориентируетесь. Итак, что вам нужно сделать, это изменить ваш скрипт на что-то вроде:

tell application "MyApp" to launch

Также вы должны ответить на событие ascr/noop вместо ****/**** (typewildcard/typewildcard).

person dj bazzie wazzie    schedule 13.05.2015
comment
Это единственный способ, которым я нашел, чтобы обратиться к MyApp другими способами, которыми Редактор AppleScript не знает myApp - person Sanich; 14.05.2015
comment
Нет, но появится диалоговое окно, и тогда вам нужно выбрать свое приложение. - person dj bazzie wazzie; 15.05.2015