6

アクセシビリティAPIを使用して外部OSXアプリケーションを自動化しようとしています。アプリケーションの状態の一部はAPIを介して利用できないため、画面スクレイピングを介して取得します。これを行うには、「ウィンドウロール」を持つアクセシビリティオブジェクトのCGWindowIDを取得する必要があります。

「ウィンドウロール」アクセシビリティオブジェクトのCGWindowIDを取得する直接的な方法はありますか?サイズ、タイトル、場所など、ウィンドウのさまざまな属性を照合することでヒューリスティックに取得できますが、これは本当にハッキーです。アプリケーションがコーナーケースもサポートする場合は、可能性が低い場合でも、より良いと思います。 。

4

2 に答える 2

10

少なくともLeopard以降の関数があります(そして10.7.3の時点ではまだあります):

extern "C" AXError _AXUIElementGetWindow(AXUIElementRef, CGWindowID* out);

ただし、このようなものを使用する場合の通常の注意事項が適用されます。次のOSアップデートですぐに変更される可能性があります!

于 2012-03-08T20:37:56.617 に答える
4

それを行う方法はありません。アクセシビリティ階層は、実際のウィンドウ/ビュー階層から完全に切り離されています。私はあなたのマッチングが最もうまくいくと思います。

于 2009-11-19T23:20:32.643 に答える