Mac OS X: открыть приложение при входе в систему, не показывая главное окно - PullRequest
6 голосов
/ 08 апреля 2011

Я разрабатываю приложение, которое хочу запускать автоматически, когда пользователь входит в систему. Есть несколько ответов о том, как это сделать, в частности, я использую код из этого репозитория GitHub , и работает нормально.

Что я хочу сейчас и не могу найти, как это сделать, так это запустить приложение, но без отображения главного окна. Это только когда приложение запускается при входе в систему, если приложение закрыто и пользователь открывает его щелчком в Dock (или где-либо еще), я хочу, чтобы оно отображало окно.

Возможно ли это? Есть идеи как это сделать?

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

1 Ответ

10 голосов
/ 08 апреля 2011

Ну, я нашел, как это сделать ... Этот Отчет об ошибке Open Radar помог , я использовал неправильное свойство.

Вот код:

- (void)enableLoginItemWithLoginItemsReference:(LSSharedFileListRef )theLoginItemsRefs ForPath:(NSString *)appPath {
// We call LSSharedFileListInsertItemURL to insert the item at the bottom of Login Items list.
CFURLRef url = (CFURLRef)[NSURL fileURLWithPath:appPath];

CFMutableDictionaryRef inPropertiesToSet = CFDictionaryCreateMutable(NULL, 1, NULL, NULL);
CFDictionaryAddValue(inPropertiesToSet, kLSSharedFileListLoginItemHidden, kCFBooleanTrue);

LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(theLoginItemsRefs, kLSSharedFileListItemLast, NULL, NULL, url, inPropertiesToSet, NULL);       
if (item) {
    CFRelease(item);
}
}

Решением было создать словарь с ключом kLSSharedFileListLoginItemHidden и значением true и передать его в функцию LSSharedFileListInsertItemURL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...