ステータス バー コンポーネントがあるため、エージェントとして実行している Cocoa アプリケーションがあります。アプリケーションがウィンドウを表示するときに、Ctrl-Tab を押してアプリケーションを切り替えると、これらのウィンドウがリストに表示されません。
アプリケーションのウィンドウを強制的に表示する方法はありますか?
ステータス バー コンポーネントがあるため、エージェントとして実行している Cocoa アプリケーションがあります。アプリケーションがウィンドウを表示するときに、Ctrl-Tab を押してアプリケーションを切り替えると、これらのウィンドウがリストに表示されません。
アプリケーションのウィンドウを強制的に表示する方法はありますか?
アクティブなアプリケーションになることは決してないため、エージェントである間はそうではありません。エージェントは最小限のユーザー インタラクションのみを行うように意図されているため、ユーザーがコマンド タブを使用してエージェント ウィンドウから離れる必要があるほどエージェント ウィンドウが長く表示されることはないと想定されます。(個人的には、同じ理由でアプリケーション ウィンドウの背後にあるクラッシュ レポート ウィンドウが常に失われているので、これは面倒だと思いますが、これは理にかなっています。)
ただし、ステータス バー アイテムが機能するためにアプリがエージェントとして実行されている必要はないので、LSUIElement フラグを NO に設定するだけで完了です。たまたまステータス バー項目をインスタンス化する、通常の非エージェント アプリである可能性があります。
ウィンドウが表示されているとき以外はアプリケーションをアクティブにできないようにする場合は、さらに複雑になります。ウィンドウを表示するには、おそらくアプリケーションとエージェントを別々のプロセスに分離し、エージェントにアプリケーションを起動させる必要があります。次に、ウィンドウが閉じられたときにアプリケーションが終了し、エージェントだけが実行されていることを確認します。Arq ( http://www.haystacksoftware.com/arq/ ) は、このように機能するアプリ/エージェント ペアの一例であり、おそらくエージェントとアプリの違いは、あなたが求めているよりも明確です。