4

MAC OS で最前面のアプリケーションのすべてのショートカットを読み取る必要があります。これを提供するCocoa、Objective-cのAPIまたはクラスはありますか?

4

2 に答える 2

8

アクセシビリティ API が必要です。残念ながら、かなり複雑なため、UIElementInspector のソース コードを読んで、その使用方法や、 Mac のアクセシビリティ プログラミング ガイドラインの支援アプリケーションに関連するセクションを確認することをお勧めします。

あなたが望むものにはかなりのコードが必要なので、手順の概要を説明します。

  1. アプリケーションのリストを取得し、プロパティが[[NSWorkspace sharedWorkspace] runningApplications]であるアプリケーションを取得するために使用します。activeYES
  2. NSRunningApplicationprocessIdentifierプロパティを使用して、そのアプリケーションの PID を取得します。
  3. 次に、 Application Services APIを介してアクセスするアクセシビリティについて説明します。
  4. AXUIElementCreateApplicationを引数として使用して、アクティブなアプリケーションを表す AXUIElement を作成しpidます。
  5. AXUIElementこれで、ApplicationロールまたはAXApplication疑似クラスを持つ ができました。要素の階層を下に進みたいと思うでしょうAXApplication-> AXMenuBar-> AXMenuBarItem-> AXMenuItem。それらの下にネストされたAXMenuItems他のものを持つことができることに注意してください。AXMenuItems
  6. 階層をトラバースするには、 を使用AXUIElementCopyAttributeValuesして の値を取得しますkAXChildrenAttribute。これは children の配列を返しAXUIElementsます。
  7. 最後に、要素に到達したらAXMenuItem、実際のショートカットの Menu Item Cmd Char、Glyph、Modifiers、および Virtual Key 属性を調べます。のような属性名の定数は、ここkAXMenuItemCmdCharAttributeにリストされています。
于 2012-07-29T06:08:55.113 に答える
0

@woodyと競争しようとはしていません:)

しかし、私はこれを見つけました。それも役立つかもしれません:

UI ブラウザ

于 2012-07-29T06:19:52.630 に答える