9

アプリケーションに参加せずに「makeKeyAndOrderToFront」を作成する方法はありますか?

私がSafariにいて、メニューバーにアプリへのMenuItemがある場合、これを押した後、アプリのウィンドウを前面に表示したいと思います(アプリケーションにいる場合にのみ、makeKeyAndOrderToFrontがこれを作成します)。

どの方法を使用できますか? また、このウィンドウをアニメーション化するにはどうすればよいですか (Tweeties Add new Tweet -> atebits.com など)。

ありがとうございました!

4

4 に答える 4

22

お気づきのように、アプリケーション内でウィンドウの順序を変更しても、アクティブなアプリケーションには影響しません。アプリケーションをアクティブ化することで、アプリケーションをフォアグラウンドに移動できます。

[NSApp activateIgnoringOtherApps:YES];

アプリケーションにドック アイコンがある場合、動作はユーザーがそれをクリックするのと似ています。

于 2010-04-08T14:47:23.213 に答える
1

Applescript は、アプリを前面に出す簡単な方法です。ただし、アニメーションは実行されません。

tell application "System Events" to set frontmost of process "My Application" to true
于 2010-04-08T13:16:13.853 に答える
0

アプリケーションがウィンドウ サーバーに接続されている場合 (AppKit または Carbon を使用している場合)、コア サービス機能SetFrontProcess()を使用してそれを前面に出すことができます。SetFrontProcessWithOptions()アプリの最前面の非フローティング ウィンドウのみを前面に表示するために使用できます。これらの関数は 64 ビット アプリケーションで使用できるように見えますが、10.6 以降をターゲットにしている場合は、このNSRunningApplicationクラスを使用する方がよいでしょう。何かのようなもの

[[[NSRunningApplication
   runningApplicationsWithBundleIdentifier:ident] lastObject]
 activateWithOptions:0]

トリックを行う必要があります。

于 2010-04-08T19:14:31.127 に答える
0

質問を正しく理解している場合、おそらくあなたが望むことを達成するための最良の方法は、メニュー項目が選択された後に送信するAppleイベントにアプリケーションを応答させることです。これにより、アプリケーションと目的のウィンドウが前面に表示されます。

于 2010-04-08T12:59:57.303 に答える