我正在开发MAC,需要获取当前正在运行的所有活动应用程序的列表,我的意思是具有实际窗口的用户可以查看/关闭/最小化/最大化。
我尝试使用NSWorkspace runningApplications函数,但它提供了很长的应用程序列表(很可能它还列出了一些隐藏的应用程序)但我只需要那些具有窗口UI的应用程序。
我还使用了以下帖子中的建议来获取Dock下方的窗口,如果Dock可见,它可以正常工作: CGWindowListCreate generates a hugely long list of windows
但是当隐藏Dock时,此解决方案不起作用。
有没有人知道如何在MAC上获取用户可见的正在运行的应用程序列表?
答案 0 :(得分:1)
它可能对你有所帮助。试试这个
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
NSLog(@"%@",[app localizedName]);
}
答案 1 :(得分:0)
#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