2013-02-25 11 views
2

Можно ли обнаружить, когда пользователь дважды нажимает на мое приложение (в поисковике), если оно уже открыто? Мне нужно обнаружить это, так как приложение работает скрыто, и только если пользователь «повторно открывает», он должен показать пользовательский интерфейс.Обнаруживать повторное открытие приложения?

Есть ли какие-либо события/уведомления, отправленные в приложение, когда это происходит?

Редактировать: Я знаю, что Mac OS X разрешает только один экземпляр. Мне нужно вызвать метод в моем текущем экземпляре, если пользователь пытается загрузить.

Edit: кажется, - (BOOL) applicationShouldHandleReopen: (NSApplication *) theApplication hasVisibleWindows: (BOOL) флаг должен сделать трюк.

+0

Обычно какао-приложение не позволяет одновременно запускать несколько экземпляров. –

+0

@ParagBafna Я знаю, мне просто нужно вызвать метод в моем текущем экземпляре, если пользователь _tries_ снова запустит приложение. – Wesley

ответ

0

Вы можете использовать NSApplication делегатом - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag

Отправленные приложением к делегату до поведения по умолчанию для вновь открыть (РАПП) AppleEvent с.

0

Внесите applicationWillUnhide: (из протокола NSApplicationDelegate) в делегат вашего приложения. Его следует вызывать, если пользователь пытается отобразить приложение.

+0

На самом деле я, вероятно, был неясен, приложение работает только с иконкой в ​​панели меню системы, но это тоже можно скрыть с помощью настроек приложения. Я предполагаю, что это отличается от hide/unhide с помощью cmd + h или минимизации. Прошу прощения за путаницу. – Wesley

+0

@Wesley, похоже, что вы хотите, чтобы ваш процесс преобразовывался в нормальное полное приложение из элемента состояния, когда пользователь пытается «открыть», предположительно используя TransformProcessType(). Это интересно - были ли вы успешны? Любые ошибки? –

0

Внесите -applicationDidBecomeActive: в ваш делегат приложения.

Смежные вопросы