6

NSWorkspaceDidDeactivateApplicationNotification通知を監視して、フォーカスを失ったばかりのアプリケーションを取得しています。最終的に、通知オブジェクトのuserInfoディクショナリキー(NSWorkspaceApplicationKey)から取得するNSRunningApplicationのインスタンスになります。

通知からアプリからメインウィンドウを取得できると思っていたのですが、NSRunningApplicationがかなり制限されているようで、ここからどこに行けばいいのかわかりません。どんな助けでもいただければ幸いです。

ところで-私はMacRubyを使用していますが、答えはMacRubyにある必要はありません。

ありがとう

4

3 に答える 3

5

Appleは伝統的に、この種のことについてかなり制限されてきました。NSRunningApplication自体は10.6で導入されたばかりであり、あなたが言ったように、それは少し制限されています。やりたいことに応じて、答えはアクセシビリティフレームワークにある場合もあれば、CGWindowAPIにある場合もあります。NSRunningApplicationのprocessIdentifierを使用して、それらのAPIと一致させることができます。

于 2009-12-30T18:09:16.030 に答える
3

他のアプリのメインウィンドウを取得するのは非常に困難です。彼らはココアであるとさえ保証されていません!それらはCarbon、Java、Qt、Monoのいずれかです...したがって、ハックしない限り、別のアプリのNSWindowを取得する方法はありません。Accessibility APIを試して、使用するフレームワークとは関係なく、他のアプリのウィンドウ情報などを取得できますが、使い方はそれほど簡単ではありません。

于 2009-12-30T17:58:31.417 に答える
1

アプリケーションがAppleScriptサポートまたはその他の手段を介してIACに参加することを選択しない限り、自分のヒープスペースの外にあるウィンドウやその他のものに触れないでください。

于 2009-12-30T19:00:35.990 に答える