2015-08-05 4 views
1

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

#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 не сфокусирован. Что я делаю не так?

ответ

3

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

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

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

+0

Добавление 'NSApplicationActivateIgnoringOtherApps' сработало! Спасибо! – Adrian

+0

Привет @Adrian и товарищ, у меня проблема с этим, если все окна процесса сведены к минимуму, это не сводит к минимуму окна. В любом случае, чтобы обезопасить окна, а затем сосредоточиться? Вот скринкаст моей проблемы, я создаю менеджер профиля Firefox - https://www.youtube.com/watch?v=sR5uf4eR8js – Noitidart