gpt4 book ai didi

objective-c - 单实例应用程序 - 激活窗口 - Cocoa

转载 作者:行者123 更新时间:2023-12-03 17:34:01 24 4
gpt4 key购买 nike

我有两个 cocoa 应用程序。 Application1 调用 Application2(abc.app) 如下 -

if ([[NSWorkspace sharedWorkspace] respondsToSelector:@selector(launchApplicationAtURL:options:configuration:error:)])
return nil != [[NSWorkspace sharedWorkspace] launchApplicationAtURL:[NSURL fileURLWithPath:@"abc.app" isDirectory:NO] options:NSWorkspaceLaunchDefault configuration:nil error:NULL];

这应该打开 Application2 (abc.app)。现在,如果应用程序 1 再次调用应用程序 2,我想激活 abc.app(如果它在扩展坞中最小化)。我想确保 abc.app 的单个实例正在运行。我们怎样才能实现这一目标?

最佳答案

不太确定您的问题。 Mac OS X 默认情况下仅启动应用程序的一个实例。 (除非您在磁盘上有多个可执行文件的物理副本,但即使在这种情况下,如果具有相同捆绑 ID 的应用程序已在运行,Info.plist 键也会禁止启动应用程序)。

另外,默认情况下,如果 NSWorkspace 没有打开其他窗口,则 NSWorkspace 应该将您的应用程序置于最前面并取消折叠(它的行为应该就像您在 Finder 中再次双击它,或者在它打开时单击它的停靠栏图标一样)已经在运行),它将调用第二个应用程序的“重新打开应用程序”处理程序。

如果它没有这样做,您可以尝试从“重新打开”委托(delegate)方法显式取消折叠主窗口,或者如果您不希望这种情况发生(但为什么不呢?) ,您可以考虑在两个应用程序之间发送 Apple 事件。

此外,您还可以通过查看 runningApplications 并查找具有相同 bundle ID 的条目来检查第二个应用程序是否已在运行。

关于objective-c - 单实例应用程序 - 激活窗口 - Cocoa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com