-[NSRunningApplication activWithOptions:] не работает

Я пытаюсь создать программу, которая будет фокусироваться на определенном приложении (если оно запущено). Вот мой код:

#import <Cocoa/Cocoa.h>
#import <stdio.h>

int main() {
  // activate Firefox
  NSArray *apps = [NSRunningApplication runningApplicationsWithBundleIdentifier: @"org.mozilla.firefox"];

  if ([apps count] == 0) {
    printf("no matching app\n");
    return 1;
  }

  if (![apps[0] activateWithOptions: NSApplicationActivateAllWindows]) {
    printf("failed to activate\n");
    return 1;
  }

  return 0;
}

Когда я запускаю это, он печатает "не удалось активировать", и Firefox не фокусируется. Что я делаю неправильно?

1 ответ

Решение

Просто используйте модификатор NSApplicationActivateIgnoringOtherApps для активации. Это работает хорошо.

Дополнительно activWithOptions: метод имеет следующее примечание:

Этот метод вернет NO, если приложение завершило работу или не является типом приложения, которое можно активировать.

Другие вопросы по тегам