Я установил обработчик событий для Apple, URL, в мое приложение:AEInstallEventHandler обработчик не вызывается при запуске
OSStatus e = AEInstallEventHandler(kInternetEventClass,
kAEGetURL,
NewAEEventHandlerUPP(AppleEventProc),
(SRefCon)this,
false);
И это работает, если мое приложение работает. Однако, если мое приложение не запущено, щелчок по URL-адресу в браузере запускает приложение, но Apple Event не получено на моем обработчике. Мой вызов AEInstallEventHandler во время фазы запуска моего приложения, прежде чем он достигнет цикла сообщений. Это не первое, что я делаю, но не слишком далеко от него. (Очевидно, что я правильно настроил plist, так как я получаю события во время работы)
Любые идеи о том, как это сделать?
Интересно, когда Chrome начинает обрабатывать URL-адрес mailto, он передает «-psn_0_5100765» в командной строке. Что для меня ничего не значит, кто-нибудь знает, что он пытается мне сказать?
Примечание. Я настроил отладку Apple Event и снова запустил ее. Я определенно получаю сообщение GURL при запуске, после того как я установил обработчик обратного вызова. Однако я все еще не могу понять, почему мой callback не вызывается с этим событием.
Вы пишете новое приложение Carbon? Зачем??!? В любом случае ... есть ли способ, которым вы можете поместить свой AEInstallEventHandler в функции, вызываемые при запуске приложения? (идея заключается в том, что обработчик находится на месте до того, как события Carbon будут обработаны, и Apple Event будет удалено без обработчика) –
Обработчик установлен во время создания моего первого объекта и определенно до цикла сообщения. Я работаю над существующим приложением, которое у меня нет времени на порт в какао. – fret
'-psn_0_5100765' выглядит как' ProcessSerialNumber', который является более старым (до Углеродной эры) Mac-эквивалентом идентификатора процесса (с оговорками.) Я подозреваю, что '0' является высоким' long' PSN, 5100765' - низкий 'long'. Вероятно, это PSN на вкладке Chrome. –