【问题标题】:how to get windows of NSRunningApplication如何获取 NSRunningApplication 的窗口
【发布时间】:2019-12-02 08:11:23
【问题描述】:

我想获取正在运行的应用程序的窗口列表。 我可以从[[NSWorkspace sharedWorkspace] runningApplications] 获取正在运行的应用程序列表,但窗口列表仅在NSApplication 上可用。 有什么方法可以将NSRunningApplication转换成NSApplication,或者有什么方法可以更直接的获取窗口列表?

【问题讨论】:

标签: cocoa nsapplication nsworkspace nsrunningapplication


【解决方案1】:

您需要查看 CoreGraphics 调用 CGWindowListCopyWindowInfo

你这样称呼它

    CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);

然后遍历窗口信息数组,找到您感兴趣的应用程序中的信息,然后用它做您想做的事情。

【讨论】:

  • 嘿,肯!这是一个很好的答案/提示,但它仍然没有告诉如何获得 CG/NSWindow ;-) NSRunningApplication 不提供窗口/窗口编号,我在尝试获取时崩溃(可能做错了什么) NS/CGWindow 和我的CGWindowIDCGWindowListCopyWindowInfo 获得
  • 那是因为你不能为另一个应用程序创建一个 NSWindow。至于获取特定应用程序的窗口,您可以检查并比较kCGWindowOwnerPID 键的值与NSRunningApplicationprocessIdentifier 属性。
猜你喜欢
  • 1970-01-01
  • 2022-01-26
  • 2018-01-12
  • 2014-08-15
  • 2016-02-27
  • 2015-09-09
  • 2013-06-26
  • 2020-02-03
  • 1970-01-01
相关资源
最近更新 更多