Как заказать окно передней стороне, если Вы не находитесь в Приложении в Objective C

Существует ли способ сделать "makeKeyAndOrderToFront", не будучи в Приложении?

Если я нахожусь в Safari и в Строке меню существует MenuItem к моему Приложению, после того, как я нажимаю это, я хочу показать окно своего Приложения в Передней стороне (makeKeyAndOrderToFront, делает это просто, если Вы находитесь в Приложении).

Какой путь я могу использовать? И как я могу анимировать это Окно (как Tweeties, Добавляет новый Твит-> atebits.com).

Спасибо!

9
задан ahmet2106 7 April 2010 в 14:52
поделиться

4 ответа

Возможно, лучший способ добиться того, что вы хотите, если я правильно понимаю вопрос, - это заставить ваше приложение реагировать на событие Apple, которое вы отправляете ему после выбора пункта меню, что приведет к отображению вашего приложения и желаемого окна перед.

0
ответ дан 4 December 2019 в 09:12
поделиться

При условии, что у вашего приложения есть соединение с оконным сервером (которое будет, если оно использует AppKit или Carbon), вы можете использовать функцию Core Services SetFrontProcess () , чтобы вывести его на передний план. SetFrontProcessWithOptions () может использоваться для вывода на передний план только самого переднего неплавающего окна вашего приложения. Эти функции кажутся доступными для 64-битных приложений, но если вы ориентируетесь на 10.6+, вам, вероятно, лучше использовать класс NSRunningApplication . Что-то вроде

[[[NSRunningApplication
   runningApplicationsWithBundleIdentifier:ident] lastObject]
 activateWithOptions:0]

должно помочь.

0
ответ дан 4 December 2019 в 09:12
поделиться

Как вы обнаружили, изменение порядка окон в вашем приложении не влияет на то, какое приложение активно. Вы можете вывести свое приложение на передний план, активировав его:

[NSApp activateIgnoringOtherApps:YES];

Если бы у вашего приложения был значок док-станции, поведение было бы похоже на поведение пользователя, щелкнувшего по нему.

22
ответ дан 4 December 2019 в 09:12
поделиться

Applescript будет тривиально простым способом сделать ваше приложение фронтмодом. Однако оно не будет делать анимацию.

tell application "System Events" to set frontmost of process "My Application" to true
1
ответ дан 4 December 2019 в 09:12
поделиться