MacOS Xではマウスクリックを特定のウィンドウに送信できますか?画面の代わりにマウスクリックをシミュレートする
私は既にCGPostMouseEvent
で画面全体にクリックを送信しています。 私がコントロールしたいウィンドウはお互いに重なり合うので、私の次のアイデアはクリックをトリガーする前に適切なウィンドウを前面に持って来ることでした。それは動作しますが、完全な混乱で終了します... ;-)
MacOS Xではマウスクリックを特定のウィンドウに送信できますか?画面の代わりにマウスクリックをシミュレートする
私は既にCGPostMouseEvent
で画面全体にクリックを送信しています。 私がコントロールしたいウィンドウはお互いに重なり合うので、私の次のアイデアはクリックをトリガーする前に適切なウィンドウを前面に持って来ることでした。それは動作しますが、完全な混乱で終了します... ;-)
ここでデイブケックからいくつかのコードサンプルで文書化されていない
CGEventPostToPSN
経由Cocoaアプリケーションにイベントを送信することが可能です。彼は小さなアプリケーションon the mailing listを投稿しました。
customEvent = [NSEvent mouseEventWithType: [event type]
location: [event locationInWindow]
modifierFlags: [event modifierFlags] | NSCommandKeyMask
timestamp: [event timestamp]
windowNumber: WID
context: nil
eventNumber: 0
clickCount: 1
pressure: 0];
CGEvent = [customEvent CGEvent];
CGEventPostToPSN(&psn, CGEvent);
は、それをアーカイブするために、私は参考のためpastie.org
おそらくAccessibility APIsを使用できます。
もう少し複雑ですが、うまくいくはずです。
多分Window Manager API: SetUserFocusWindow()を使用し、マウスイベントを作成することができます。
私は既にAXAction: "AXRise"でこれを行いました。しかし、それは窓のちらつきの混乱で終わる。 –
は、私の知る限りでは、あなただけのAXAktionアイテムを送信することができます。マウスクリックはありません。 –
なぜマウスクリックでなければならないのですか?たとえば、AXPressを送信すると、ボタンが正常に動作するはずです。 –
これはうまくいきますが、アプリケーションウィンドウが隠れているかどうかをテストするように注意する必要があります。私の経験でアクセシビリティを損なう可能性があります。 –