如何在Mac中向外部进程发送事件或消息?

时间:2012-06-19 10:01:11

标签: macos cocoa macos-carbon postmessage

在Windows中,我可以将自定义消息发布到另一个进程,并通知它执行以下操作:

PostMessage(WindowOfAnyProcess, WM_CUSTOM_MESSAGE, param1, param2)

Mac OS上有哪些替代方案? Carbon Events对我有帮助吗?怎么样? 三江源。

1 个答案:

答案 0 :(得分:4)

假设这两个进程都属于您,您可以使用NSDistributedNotificationCenter向每个进程发送通知和数据。

要做到这一点,请执行以下操作:

[[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"HelloFromProcessOne" object:nil]

如果您想要包含可以使用的数据:

[[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"HelloFromProcessOne" object:nil userInfo:[NSDictionary dictionaryWithObject:@"some info here" forKey:@"data"]]

应添加注释: 沙盒应用只有在不包含字典时才能发送通知。如果发送应用程序位于App Sandbox中,则notificationInfo必须为nil。这意味着,如果您打算定位Mac AppStore,则无法提供有关通知的信息。

要使应用程序收到通知,请执行以下操作:

[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(someNotificationUpdate:) name:@"HelloFromProcessOne" object:nil]

someNotificationUpdate:将被声明为:

- (void)someNotificationUpdate:(NSNotification *)note;