使用C ++弹跳下载堆栈停靠图标(不使用Objective C)

时间:2010-01-18 13:47:48

标签: cocoa macos firefox

Firefox目前不是bounce the Downloads box in the dock when a download is finished,例如Safari,Chrome和Camino。

如果Firefox是用Objective C编写的,您可以非常轻松地添加执行此操作所需的one line of Objective C code。但事实并非如此。有没有办法从C ++调用这个Cocoa函数,以便它可以添加到Firefox中,以便所有Mac用户受益?

2 个答案:

答案 0 :(得分:4)

我推荐的是,我必须为我正在处理的项目执行此操作,您可以使用一些obj-c ++文件来提供C / C ++ api和内部使用obj-c代码来触发doc闪烁。

基本上,您创建了一个标准的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]; 
}

答案 1 :(得分:3)

您可以使用Carbon API的 CFNotificationCenterPostNotification 。 碳是纯C。

文档和代码示例here