Общесистемное распознавание событий прокрутки в Mac OSX и настройка фокуса на другое окно - PullRequest
1 голос
/ 06 сентября 2011

Я регистрируюсь для глобальных событий колеса мыши в моем приложении какао.Моя цель - иметь какое-то фоновое приложение, чтобы иметь возможность фокусировать окно другого приложения, когда пользователь прокручивает его в этом окне.По возможности с Objective-C и Cocoa, по какому маршруту мне нужно идти, если я хочу это сделать?

Мой код для регистрации события выглядит следующим образом:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [NSEvent addGlobalMonitorForEventsMatchingMask:
    NSScrollWheelMask handler:^(NSEvent * ev) {
        NSLog(@"%@", ev.description);
    }];
}

Это работает, но данные, захваченные в событии (например, окно или идентификатор окна), мне не кажутсявозможность манипулировать - и идентификатор окна даже не кажется правильным, так как я могу получить список окон и получить другой идентификатор там - только положение экрана кажется точным.Итак, три вопроса, чтобы решить эту загадку:

  1. Как я могу получить окно или идентификатор окна в определенном месте на экране?
  2. Если я могу получить только идентификатор окна, какМогу ли я найти соответствующее приложение или объект окна для манипуляции?
  3. Я думаю, мне понадобится API-интерфейс для управления окном и его фокусировки.Как это работает?

Возможно, это простые задачи, но я никогда раньше не писал приложения для Mac-Cocoa.Прежде чем предлагать документацию для чтения, вы должны знать, что я уже отсканировал всю документацию, и что мне лучше учиться на примере, чем на чтении книг:перенести заявку на фронт.Если вы считаете это возможным решением, как я могу получить идентификатор процесса для окна в определенной точке экрана?

РЕДАКТИРОВАТЬ 2: Я не хочу использовать API-интерфейсы Carbon.

...