ココアアプリケーションでグローバルマウスホイールイベントに登録しています。私の目標は、ユーザーがウィンドウをスクロールしたときに、別のアプリケーションのウィンドウにフォーカスできるようにするための、ある種のバックグラウンドアプリケーションを用意することです。Objective-CとCocoaで可能であれば、これを実行したい場合、どのルートに進む必要がありますか?
イベント登録の私のコードは次のようになります。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSEvent addGlobalMonitorForEventsMatchingMask:
NSScrollWheelMask handler:^(NSEvent * ev) {
NSLog(@"%@", ev.description);
}];
}
これは機能しますが、イベントでキャプチャされたデータ(windowやwindowidなど)を操作できないようです-リストを取得できるため、windowidも正しいものではないようですウィンドウの数とそこに別のIDを取得します-画面の位置だけが正確であるようです。したがって、この謎を解決するための3つの質問:
- 画面の特定の場所でウィンドウまたはウィンドウIDを取得するにはどうすればよいですか?
- ウィンドウIDしか取得できない場合、操作する適切なアプリケーションまたはウィンドウオブジェクトを見つけるにはどうすればよいですか?
- ウィンドウを操作してフォーカスを与えるには、アクセシビリティAPIが必要だと思います。それはどのように機能しますか?
たぶんこれらは単純な作業ですが、私はこれまでMac-Cocoaアプリケーションを作成したことがありません。読むべきドキュメントを提案する前に、私がすでにすべてのドキュメントをスキャンしたこと、そして本を読むよりも例によって学ぶ方がよいことを知っておく必要があります:-)
編集:ProcessManagerを使用してアプリケーションを前面に表示できることがわかりました。これが可能な解決策であると思われる場合、画面上の特定のポイントでウィンドウのプロセスIDを取得するにはどうすればよいですか?
EDIT2:CarbonAPIを使用したくありません。