Cocoa 如何获取NSRunningApplication的窗口
我想获取正在运行的应用程序的窗口列表。 我可以从Cocoa 如何获取NSRunningApplication的窗口,cocoa,nsapplication,nsworkspace,nsrunningapplication,Cocoa,Nsapplication,Nsworkspace,Nsrunningapplication,我想获取正在运行的应用程序的窗口列表。 我可以从[[NSWorkspace sharedWorkspace]runningApplications]获取正在运行的应用程序列表,但窗口列表仅在NSApplication上可用。 是否有某种方法可以从NSRunningApplication转换为NSApplication,或者有某种方法可以更直接地获取窗口列表?您需要查看CoreGraphics调用CGWindowListCopyWindowInfo 你这样叫它 CFArrayRef win
[[NSWorkspace sharedWorkspace]runningApplications]
获取正在运行的应用程序列表,但窗口列表仅在NSApplication
上可用。
是否有某种方法可以从
NSRunningApplication
转换为NSApplication
,或者有某种方法可以更直接地获取窗口列表?您需要查看CoreGraphics调用CGWindowListCopyWindowInfo
你这样叫它
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
然后遍历窗口信息数组,找到您感兴趣的应用程序中的窗口信息,并对其执行所需操作。这里有一个相同的问题,已经回答了:即使在这里,寡妇列表也更直接地表示?谢谢。我会检查那两个,如果我需要什么回来。嘿,肯!这是一个很好的答案/提示,但它仍然不能告诉您如何获得
CG/NSWindow
;-)NSRunningApplication
没有提供windows/window编号,当我试图用CGWindowID
获取NS/CGWindow
时,我正在崩溃(可能是做错了什么),这是因为您无法为另一个应用程序创建NSWindow。就获取特定应用程序的窗口而言,您可以检查并比较kCGWindowOwnerPID
键的值与NSRunningApplication
的processIdentifier
属性。