2012-03-05 5 views
0

Я пытаюсь контролировать глобальные события, поэтому я попытался добавить глобальный монитор. Однако я не мог получить информацию с этого монитора. Он активируется на событии, но возвращает NULL.«addGlobalMonitorForEventsMatchingMask» возвращает «null»

[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask) handler:^(NSEvent *incomingEvent){ 
NSLog(@"Window Number :%@",[[incomingEvent window] windowNumber]); 
}]; 

Этот код находится в (id)init методе в программе. Всякий раз, когда я нажимаю окно или вызываю событие, я получаю сообщение NSLOG с NULL в качестве информации о окне. Пример вывода выглядит следующим образом:

Window Number: (null) 

Я не знаю, где я буду неправильно. Может ли кто-нибудь объяснить мне?

ответ

0

Я исправил проблему. Проблема я столкнулся должен был

NSLog(@"Window Number :%@",[[incomingEvent window] windowNumber]); 

Если вы хотите, чтобы отобразить детали окна вы кликнули, используйте CGWindow.h процедуры, как описано в посте https://stackoverflow.com/a/4704158/1249876

Хотя, по логике вещей, windowNumber является метод из NSWindow Класс, в этом случае он не возвращает какой-либо выход, который немного интуитивно понятен.

+0

'windowNumber' для возврата' NSInteger', поэтому вам не следует использовать строку формата '% @', для которой требуется объект. Почему он выводится как '(null)', вероятно, потому, что 'windowNumber' возвращает 0, который будет интерпретироваться как NULL-указатель. –

Смежные вопросы