#cocoa #nswindow
#cocoa #nswindow
Вопрос:
Мне удалось получить список окон на рабочем столе с помощью CGWindowListCopyWindowInfo, но в следующий раз нужно попытаться получить свойства окна, такие как название программы, title и другие свойства.
На какой API мне следует обратить внимание и есть ли у нас какой-либо пример того, как это сделать?
Ответ №1:
Перечислите окна и извлеките конкретную информацию при циклическом просмотре:
NSMutableArray *windows = (NSMutableArray *)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
for (NSDictionary *window in windows) {
NSString *owner = [window objectForKey:@"kCGWindowOwnerName" ];
NSString *name = [window objectForKey:@"kCGWindowName" ];
NSLog(@"%@ - %@",owner,name);
}
Доступные ключи:
kCGWindowIsOnscreen
kCGWindowLayer
kCGWindowMemoryUsage
kCGWindowName
kCGWindowNumber
kCGWindowOwnerName
kCGWindowOwnerPID
kCGWindowSharingState
kCGWindowStoreType
Комментарии:
1. Как насчет получения информации, например, что это за программа, например, браузер, и если это браузер, получить список истории и т.д.
2. Таким образом невозможно получить «тип приложения». Однако вы можете проверить
kCGWindowOwnerName
agains заранее определенный массив, содержащий все браузеры. Пример массива:NSArray *browsers = [[NSArray alloc] initWithObjects:@"Safari", @"Firefox", @"Chrome", @"Opera", nil];
Проверка примера:[browsers containsObject:theOwnerName];
. Получение истории браузера полностью отличается для каждого браузера.3. Нужно ли мне делать релиз для Windows? [выпуск для Windows];