2009-07-09 8 views
0

基本的には、私は別のアプリケーションの何かが起こるたびに私のアプリケーションからメソッドを実行したいと思います。私は他のアプリからメソッドの名前を知っている、私はちょうど私のアプリがそれに応答して何かをする方法を知らない。入力マネージャーは最適なソリューションですか?ココアの入力マネージャー?

+0

状況を伝えることはできますか?他のアプリからメッセージが届いていますか?他のアプリは何ですか?あなたは何をするつもりですか? –

+0

これは可能ですが、他のアプリが観察されるつもりでない限り、多少の混乱を招くことなくあまりできることはありません。私は入力マネージャーが助けになるとは思わない... –

+0

それが役に立ったら、私はiPhone Simulatorについて話している。私はそれに応じて私のアプリに何かをさせたい。私はそれが(toggleRotationLeft:/ toggleRotationRight :)を回転するときに呼び出すメソッドを知っている、私はちょうどそのコードに応答して何かをする方法を把握することはできません。 ありがとう! –

答えて

0

一般的には、 です。これは、他のアプリがNSNotificationを投稿している場合や、それ以外の場合はAPIを公開している場合にのみ可能です。

そうでなければ、それほど簡単ではないです。 NSEvent globalMonitorとCGEventTap の組み合わせで何かを一緒にハックすることができます。アクティブなアプリケーション(この場合はシミュレータ)と関連するキーボードショートカットが入力された状態を監視できます。もちろん回転のためのメニュー項目コントロールを離れる

この...

CGEventともう一つの方法は、ウィンドウのサイズを監視し、比率に注意を払うことです。私たちは、シミュレータのバージョンを含むすべてのiOSデバイスが非正方形の縦横比を持っていることを知っています。 OS Xのウィンドウのタイトルバーの高さは固定されています。 その後、手動でkCGWindowBounds あなたはマウスダウンで発生するイベントをするために見て、ウィンドウの境界のチェック頻度を減らすことができ、キーウィンドウリストの変化を監視しようとするキーCGWindowウィンドウリストkCGWindowOwnerPIDを解釈し、NSRunningApplicationprocessIdentifierにそれを一致させることができOS Xツールバーの高さ。 MinXから距離xになるようにこれらをさらに絞り込んで、他のメニューではないと仮定することができます。

これは、メニューのナビゲーションに続いて、メニューバー内のマウスのダウンイベントのギャップだけでなく、完全なキーボードコントロールのギャップを有効にします。

最後に、アクセシビリティAPI(AX接頭辞)を試して、物事をよりよく識別することができます。これらは、使用することがさらに困難です。しかし、他のオプションと同様に、システム環境設定でアクセシビリティが有効になっている必要があります。 (rootとして実行することができない限り、これは決して良い考えではありません)。

関連する問題