问题标签 [nsrunningapplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2528 浏览

objective-c - 无法检测到与其他用户一起运行的应用程序(通过切换用户)

用例:我以“ user1 ”身份登录并启动 Safari,然后单击右上角的“ user1 ”并将用户切换到“ user2 ”。现在,我正在尝试检测 Safari 是否正在为“ user1 ”运行,但我无法通过标准调用来执行此操作。我正在使用 OS X 10.8 Mountain Lion 来开发和运行我的代码。

我使用了以下内容但徒劳无功:

  1. [[NSWorkspace sharedWorkspace] runningApplications]- Safari 不在列表中
  2. GetNextProcess()- Safari 没有出现
  3. GetProcessForPID()- 我收到一个错误“没有这样的过程”

但是当我ps -aef | grep Safari从终端执行时,我可以看到 Safari。(这不仅适用于 Safari,其他应用程序也是如此。)

有人可以帮忙吗。非常感谢。

0 投票
1 回答
2454 浏览

macos - 获取从另一个用户运行的应用程序的包标识符

场景是这样的:“我从一个用户运行一个应用程序(比如myproc),然后快速用户切换到第二个用户”
现在,当我尝试确定使用特定捆绑标识符(比如com.ak.myproc)运行的所有进程时; 对于从第一个用户运行的进程,我无法确定这一点。

我尝试了以下但徒劳无功:

  1. [NSRunningApplication runningApplicationsWithBundleIdentifier:]
  2. [[NSWorkspace sharedWorkspace] runningApplications]然后比较每个应用程序的包标识符 - 为第一个用户运行的应用程序甚至没有出现在此列表中。
  3. 使用sysctl()然后遍历进程列表 - 在这里,来自第一个用户的应用程序的 pid 确实来了。在那之后:
    • 当我尝试[NSRunningApplication runningApplicationWithProcessIdentifier:]时,我得到零。
    • 当我尝试GetProcessForPID()跟随时ProcessInformationCopyDictionary(),我得到一个 nil 字典。
    • 当我尝试GetProcessForPID()跟随时GetProcessInformation(),我没有得到任何有用的东西ProcessInfoRec

有人可以帮忙吗?谢谢。

操作系统:Mac OS X 10.8.4
Xcode:4.6.2

0 投票
2 回答
413 浏览

objective-c - 查找启动 NSRunningApplication 的用户

如何检索此信息?给定一个NSRunningApplication实例,我需要知道是谁启动了它。活动监视器显示此信息。

0 投票
2 回答
1815 浏览

objective-c - 如何从 OSX 10.9 中的 ProcessSerialNum 获取 PID?

GetProcessPID在 OSX 10.9 中被标记为弃用,并附注:

使用适当的 NSRunningApplication 对象的 processIdentifier 属性。

问题是构造类方法NSRunningApplication无法NSRunningApplication通过 a获取 a ProcessSerialNum,只能通过 PID 或捆绑名称获取。

捆绑包名称太模糊(可能有多个实例)并且我没有 PID(这是我想要的)。

在 OSX 10.9 中,有没有办法在您拥有 PSN 时获取 PID?

0 投票
2 回答
2257 浏览

objective-c - 使用 ProcessSerialNumber 获取 NSRunningApplication

我有一个AppleEventDescriptor需要获取发送应用程序的包标识符的地方。Apple 事件包含一个typeProcessSerialNumber可以强制转换为ProcessSerialNumber.

问题是它GetProcessPID()在 10.9 中已被弃用,并且似乎没有被认可的方式来获得pid_t可用于实例化NSRunningApplicationusing的 a -runningApplicationWithProcessIdentifier:

我发现的所有其他选项都存在于 Processes.h 中,并且也已被弃用。

我是否遗漏了什么,或者我必须忍受这个弃用警告?

0 投票
0 回答
171 浏览

objective-c - 在调用 activateWithOptions:NSApplicationActivateIgnoringOtherApps 时将我的应用程序保留为响应者

我正在制作一个 vim 风格的“窗口管理器”,它接受文本输入,很像 Mavericks 中的 Alfred 或 Spotlight(在浮动面板中)。

我遇到的问题是当我调用 activateWithOptions: 在正在运行的应用程序上时,它会从我的窗口中窃取焦点。我希望通过简单地将我的应用程序再次置于前台来解决问题,但是似乎激活在单独的线程上运行,并且我最终在原始应用程序被激活之前激活了我的应用程序。

当我收到 NSWorkspaceDidActivateApplicationNotification 时,我尝试重新激活,但这也不起作用。

理想情况下,我想暂停执行,直到应用程序由于多种原因被聚焦,因为那将是我进一步操作的窗口。

有没有人有什么建议?

0 投票
0 回答
189 浏览

ios - 运行应用程序时出错

当我尝试在我的 iPhone 和模拟器上运行我的应用程序时,我得到了这个答案。

架构 arm64 的未定义符号:“_OBJC_CLASS_$_AppDelegate”,引用自:main.o ld 中的 objc-class-ref:未找到架构 arm64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v查看调用)

0 投票
1 回答
251 浏览

xcode - 无法杀死的、伪造的 NSRunningApplication 坐在我的 Dock 中?

我在 OSX 10.9.4 上使用 Xcode 5.1.1 来调试 Cocoa + OpenGL 应用程序。到目前为止,我只在 Xcode 调试器下运行过我的应用程序。上周我退出 Xcode 只是为了找到我的应用程序的图标仍在 Dock 中。使用 Show In Finder 将我带到 Xcode 的 DerivedData 中的调试可执行文件。我最终重新启动以摆脱它(更多内容),直到今天一切都很好。但现在我的 Dock 中有两个这样的图标。

问题:这些应用程序不能被杀死!强制退出什么都不做。它们不会显示在使用“ps aux”或活动监视器的进程列表中。Restart 只是陷入了一个试图摆脱它们的循环。只有强制重启 Mac 才有效。

根据 NSWorkspace 的 runningApplication 方法,有 NSRunningApplication 实例与这些应用程序相关联。但是进程 ID 与实际进程不对应。控制台日志中没有任何相关内容。

其他人遇到过这种情况吗?让 NSWorkspace 摆脱虚假的 NSRunningApplication 实例有什么建议吗?

0 投票
1 回答
1472 浏览

objective-c - 过滤 [NSWorkspace runningApplications] 以仅包含用户应用程序(无守护程序/UIAgents)

[NSWorkspace runningApplications]除了手动检查每个应用程序的 plist 是否有 UIAgent 键之外,有没有办法过滤由提供的应用程序列表以隐藏所有守护程序等?如果应用程序没有显示在 Dock 中,我对此不感兴趣。

0 投票
0 回答
151 浏览

macos - Finder 在辅助显示器上没有响应 [NSRunningApplication activateWithOptions]

我正在尝试将 Finder 窗口置于前面:

这适用于主要的内置显示器。但在我的外接显示器上,调用-activateWithOptions. 这是预期的行为吗?它是一个错误吗?