Существует ли способ сделать "makeKeyAndOrderToFront", не будучи в Приложении?
Если я нахожусь в Safari и в Строке меню существует MenuItem к моему Приложению, после того, как я нажимаю это, я хочу показать окно своего Приложения в Передней стороне (makeKeyAndOrderToFront, делает это просто, если Вы находитесь в Приложении).
Какой путь я могу использовать? И как я могу анимировать это Окно (как Tweeties, Добавляет новый Твит-> atebits.com).
Спасибо!
Возможно, лучший способ добиться того, что вы хотите, если я правильно понимаю вопрос, - это заставить ваше приложение реагировать на событие Apple, которое вы отправляете ему после выбора пункта меню, что приведет к отображению вашего приложения и желаемого окна перед.
При условии, что у вашего приложения есть соединение с оконным сервером (которое будет, если оно использует AppKit или Carbon), вы можете использовать функцию Core Services SetFrontProcess ()
, чтобы вывести его на передний план. SetFrontProcessWithOptions ()
может использоваться для вывода на передний план только самого переднего неплавающего окна вашего приложения. Эти функции кажутся доступными для 64-битных приложений, но если вы ориентируетесь на 10.6+, вам, вероятно, лучше использовать класс NSRunningApplication
. Что-то вроде
[[[NSRunningApplication
runningApplicationsWithBundleIdentifier:ident] lastObject]
activateWithOptions:0]
должно помочь.
Как вы обнаружили, изменение порядка окон в вашем приложении не влияет на то, какое приложение активно. Вы можете вывести свое приложение на передний план, активировав его:
[NSApp activateIgnoringOtherApps:YES];
Если бы у вашего приложения был значок док-станции, поведение было бы похоже на поведение пользователя, щелкнувшего по нему.
Applescript будет тривиально простым способом сделать ваше приложение фронтмодом. Однако оно не будет делать анимацию.
tell application "System Events" to set frontmost of process "My Application" to true