1

標準の Cocoa アプリケーション呼び出し Foo.app (Xcode で [新しいプロジェクト] > [Cocoa アプリケーション] を選択するだけで得られるようなもの) があるとします。次を使用してターミナル経由でアプリを開くとします。

open Foo.app/

次に、上部のステータス バーに Foo の名前が表示され、そのウィンドウがフォーカスされ、他のすべてのアプリの前に表示されます。

代わりに、次のように、.app フォルダーに埋め込まれた実行可能ファイルを端末から直接呼び出す場合:

Foo.app/Contents/MacOS/Foo

何も起こらないようです検査すると、アプリは実際に開いていますが、フォーカスが合っていません (ターミナルはまだあります)。ドックで見つけるか、そのウィンドウを見つける必要があります。

Foo アプリケーションが実行時にフォーカスされていることを確認する方法はありますか? 上記のように実行可能ファイルを介して実行されたとしても?

4

5 に答える 5

2

アプリは、電話をかけることで「フォーカスを盗む」ことができます

[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];

詳細については、NSApplicationのドキュメントを参照してください。

于 2011-02-17T22:11:26.830 に答える
1

あなたのアプリ (あなたが書いている) にこの動作を与える方法を尋ねているなら、あなたの中でapplicationWillFinishLaunching:を呼び出すことができます[NSApp activateIgnoringOtherApps:YES]

于 2011-02-17T21:32:14.910 に答える
1

次のように入力するつもりでしたか:

open -a /Applications/Foo.app/

-aオプションに注意してください

于 2011-02-17T17:44:17.433 に答える
0

ターミナルからアプリケーションを開く(そして操作する)には、(少なくとも)3つの異なる方法があります。

  1. 次のように入力することで、ターミナルから任意のアプリケーション(LaunchServicesに登録されている)を起動できます(open -a ApplicationName末尾の「.app」やパスは必要ありません)。

  2. 次のように入力して、特定のパスを指定してアプリケーションを開くことができますopen /path/to/ApplicationName.app(アプリケーションがすでにLaunchServicesに登録されている可能性があるため、これが必要になることはめったにありません)。

  3. と入力すると、実行可能ファイルを開いて操作open /path/to/ApplicationName.app/Contents/MacOS/ApplicationNameできます。ここでの違いは、一部のアプリケーションでは、引数を渡したり、後でコマンドラインで引数を操作したりできることです。先に進んでopen /Applications/Mail.app/Contents/MacOS/Mail、たとえば試してみてください-それはあなたにデバッグログを返します。

  4. 実行可能ファイルを直接呼び出すことにより、「open」を使用しなくても一部のアプリケーションと対話できます。/Applications/Firefox.app/Contents/MacOS/firefox-bin —helpたとえば試してみてください。

したがって、コマンドラインで起動したアプリケーションにフォーカスがあることを確認したい場合は、方法1または2のいずれかを使用してください。

于 2011-02-17T20:08:10.757 に答える
0

おそらくAppleScript?

tell application "TextEdit"
    activate
end tell
于 2011-02-17T17:22:00.603 に答える