【问题标题】:Need to get the list of currently running applications visible to the user on MAC需要在 MAC 上获取用户可见的当前正在运行的应用程序列表
【发布时间】:2013-07-18 14:57:05
【问题描述】:
我正在 MAC 中开发,需要获取当前运行的所有活动应用程序的列表,我的意思是那些有实际窗口并且用户可以看到/关闭/最小化/最大化的应用程序。
我尝试使用 NSWorkspace runningApplications 函数,但它提供了一长串应用程序(很可能它还列出了一些隐藏的应用程序),但我只需要具有窗口 UI 的应用程序。
我还使用了以下帖子中的建议来获取 Dock 下方的窗口,如果 Dock 可见,它可以正常工作:
CGWindowListCreate generates a hugely long list of windows
但是,当 Dock 隐藏时,此解决方案不起作用。
有没有人知道如何让 MAC 上的用户看到正在运行的应用程序列表?
【问题讨论】:
标签:
macos
window
nsworkspace
【解决方案1】:
它可以帮助你。试试这个
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
NSLog(@"%@",[app localizedName]);
}
【解决方案2】:
#import <Foundation/Foundation.h>
void ListWindows()
{
NSMutableArray* windows =
(__bridge NSMutableArray *)CGWindowListCopyWindowInfo(
kCGWindowListOptionOnScreenOnly |
kCGWindowListExcludeDesktopElements,
kCGNullWindowID);
for (NSDictionary* window in windows) {
if([[window objectForKey:@"kCGWindowLayer" ] intValue] == 0)
{
NSLog(@"%@", [window objectForKey:@"kCGWindowOwnerName"]);
}
}
}
int main(int argc, const char * argv[])
{
NSLog(@"Active windows:");
ListWindows();
return 0;
}
样本输出:
Active windows:
Xcode
TextEdit
Finder