MAC OS で最前面のアプリケーションのすべてのショートカットを読み取る必要があります。これを提供するCocoa、Objective-cのAPIまたはクラスはありますか?
2 に答える
8
アクセシビリティ API が必要です。残念ながら、かなり複雑なため、UIElementInspector のソース コードを読んで、その使用方法や、 Mac のアクセシビリティ プログラミング ガイドラインの支援アプリケーションに関連するセクションを確認することをお勧めします。
あなたが望むものにはかなりのコードが必要なので、手順の概要を説明します。
- アプリケーションのリストを取得し、プロパティが
[[NSWorkspace sharedWorkspace] runningApplications]であるアプリケーションを取得するために使用します。activeYES NSRunningApplicationのprocessIdentifierプロパティを使用して、そのアプリケーションの PID を取得します。- 次に、 Application Services APIを介してアクセスするアクセシビリティについて説明します。
AXUIElementCreateApplicationを引数として使用して、アクティブなアプリケーションを表す AXUIElement を作成しpidます。AXUIElementこれで、ApplicationロールまたはAXApplication疑似クラスを持つ ができました。要素の階層を下に進みたいと思うでしょうAXApplication->AXMenuBar->AXMenuBarItem->AXMenuItem。それらの下にネストされたAXMenuItems他のものを持つことができることに注意してください。AXMenuItems- 階層をトラバースするには、 を使用
AXUIElementCopyAttributeValuesして の値を取得しますkAXChildrenAttribute。これは children の配列を返しAXUIElementsます。 - 最後に、要素に到達したら
AXMenuItem、実際のショートカットの Menu Item Cmd Char、Glyph、Modifiers、および Virtual Key 属性を調べます。のような属性名の定数は、ここkAXMenuItemCmdCharAttributeにリストされています。
于 2012-07-29T06:08:55.113 に答える
0
于 2012-07-29T06:19:52.630 に答える