最初にNSStatusItem要素で始まるアプリケーションを作成しています。そのメニューから、NSWindowを開くメニュー項目をクリックすることができます。アプリケーションメニューでウィンドウを起動するLSUIElementアプリケーション?
このウィンドウにフォーカスがあると、アプリケーションメニューが表示されます。出来ますか?
最初にNSStatusItem要素で始まるアプリケーションを作成しています。そのメニューから、NSWindowを開くメニュー項目をクリックすることができます。アプリケーションメニューでウィンドウを起動するLSUIElementアプリケーション?
このウィンドウにフォーカスがあると、アプリケーションメニューが表示されます。出来ますか?
いいえ、アプリケーションメニューを表示するには、アプリケーションをフォアグラウンドプロセスに移行する必要があります(LSUIElementではなくなりました)。アプリケーションをフォアグラウンドに移行すると、アプリケーションはフォアグラウンドに移行できなくなります。
アプリケーションをフォアグラウンドに移行する機能は、Carbon Process ManagerにあるTransformProcessType
です。
ここでのオプションは、1)プロセスをフォアグラウンドでTransformProcessType
とした後、アプリケーションを閉じて再起動する巧妙な小さなトリックです。もう1つの選択肢2)は、2段階のアプリケーションを作成することです(これは、可能であれば、アプリケーションの一部がバックグラウンド(LSUIElement)になっている場所で可能です)。そのアプリケーションがメニュー付きのウィンドウを持ってきたいときは、ウィンドウなどを含むヘルパーアプリケーションを通常のアプリケーションとして起動します。ユーザーが終了すると、そのアプリケーションは閉じられ、閉じられます。 2つのアプリケーションは、UDソケット、Cocoa Distributed Object、NSMessagePortsなど、任意の数のIPCメカニズムを介して簡単に通信できます。