MAC OS で最前面のアプリケーションのすべてのショートカットを読み取る必要があります。これを提供するCocoa、Objective-cのAPIまたはクラスはありますか?
2 に答える
8
アクセシビリティ API が必要です。残念ながら、かなり複雑なため、UIElementInspector のソース コードを読んで、その使用方法や、 Mac のアクセシビリティ プログラミング ガイドラインの支援アプリケーションに関連するセクションを確認することをお勧めします。
あなたが望むものにはかなりのコードが必要なので、手順の概要を説明します。
- アプリケーションのリストを取得し、プロパティが
[[NSWorkspace sharedWorkspace] runningApplications]
であるアプリケーションを取得するために使用します。active
YES
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 に答える