Я регистрируюсь для глобальных событий колеса мыши в моем приложении какао.Моя цель - иметь какое-то фоновое приложение, чтобы иметь возможность фокусировать окно другого приложения, когда пользователь прокручивает его в этом окне.По возможности с Objective-C и Cocoa, по какому маршруту мне нужно идти, если я хочу это сделать?
Мой код для регистрации события выглядит следующим образом:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSEvent addGlobalMonitorForEventsMatchingMask:
NSScrollWheelMask handler:^(NSEvent * ev) {
NSLog(@"%@", ev.description);
}];
}
Это работает, но данные, захваченные в событии (например, окно или идентификатор окна), мне не кажутсявозможность манипулировать - и идентификатор окна даже не кажется правильным, так как я могу получить список окон и получить другой идентификатор там - только положение экрана кажется точным.Итак, три вопроса, чтобы решить эту загадку:
- Как я могу получить окно или идентификатор окна в определенном месте на экране?
- Если я могу получить только идентификатор окна, какМогу ли я найти соответствующее приложение или объект окна для манипуляции?
- Я думаю, мне понадобится API-интерфейс для управления окном и его фокусировки.Как это работает?
Возможно, это простые задачи, но я никогда раньше не писал приложения для Mac-Cocoa.Прежде чем предлагать документацию для чтения, вы должны знать, что я уже отсканировал всю документацию, и что мне лучше учиться на примере, чем на чтении книг:перенести заявку на фронт.Если вы считаете это возможным решением, как я могу получить идентификатор процесса для окна в определенной точке экрана?
РЕДАКТИРОВАТЬ 2: Я не хочу использовать API-интерфейсы Carbon.