2012-03-05 12 views
0

グローバルイベントを監視しようとしていますので、グローバルモニタを追加しようとしました。しかし、私はこのモニターから情報を得ることができませんでした。イベントでアクティブになりますが、NULLを返します。"addGlobalMonitorForEventsMatchingMask"がヌルを返します

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

このコードは、プログラムで(id)init方法です。ウィンドウをクリックするかイベントを発生させるたびに、ウィンドウ情報としてNULLのNSLOGメッセージが表示されます。次のように サンプル出力は次のとおりです。

Window Number: (null) 

私は私が間違っているつもりだどこか分かりません。誰も私を説明できますか?

答えて

0

私はこの問題を修正しました。私が直面した問題は、あなたがクリックしたウィンドウの内容を表示したい場合は、ポストで説明したように、CGWindow.hルーチンを使うhttps://stackoverflow.com/a/4704158/1249876

ものの、論理的に、windowNumberが方法であるため、

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

にしましたNSWindowクラスです。この場合、出力は返されませんが、これは直感的ではありません。

+0

'windowNumber' seamsは' NSInteger'を返すので、オブジェクトを必要とする '%@'書式文字列を使うべきではありません。 '(null)'として出力するのは、 'windowNumber'が0を返し、NULLポインタとして解釈されるためです。 –

関連する問題