Откинуть значок дока стека загрузок с помощью C ++ (без использования ObjectiveC) - PullRequest
4 голосов
/ 18 января 2010

Firefox в настоящее время не отображает окно «Загрузки» в доке после завершения загрузки , как Safari, Chrome и Camino.

Если Firefox написан на Objective C, вы можете очень легко добавить одну строку кода Objective C , необходимую для этого. Однако это не так. Есть ли способ вызвать эту функцию Какао из C ++, чтобы ее можно было добавить в Firefox для пользы всех пользователей Mac?

Ответы [ 2 ]

4 голосов
/ 18 января 2010

Что бы я порекомендовал, и я должен был сделать это для проекта, над которым я работал, у вас могло быть несколько файлов obj-c ++, которые предоставляют и C / C ++ API, и внутренне используют код obj-c для запуска Док мигает.

По сути, вы создаете стандартный заголовочный файл C / C ++. На стороне кода вы делаете файл .m или .mm файл.

Это позволит вам написать один строковый элемент obj-c в вопросах непосредственно в функцию C / C ++, и, поскольку заголовочный файл находится в простом C / C ++, это не будет ошибкой компилятора для файлов не .mm. в проекте.

Это, конечно, предполагает компиляцию с помощью компилятора (например, GCC), который говорит на обоих языках.

Простой и (проверенный) пример такого подхода:

TriggerBounce.h

void TriggerBounce(char * filepath);

TriggerBounce.m

#import <Cocoa/Cocoa.h>

void TriggerBounce(char * filepath) {
    NSString *pathToFile = [NSString stringWithCString:filepath encoding:NSUTF8StringEncoding];
    [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"com.apple.DownloadFileFinished" object:pathToFile]; 
}
3 голосов
/ 18 января 2010

Вы можете использовать Carbon API CFNotificationCenterPostNotification . Углерод чистый С.

Документация и примеры кода здесь .

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