1

常に実行する必要があるアプリがあります (ユーザーがこれに同意した場合)。

ユーザーがアプリを終了すると、フォアグラウンド アプリを LSUIElement に変換します (アプリにはメニュー バー アイコンしかなく、ドック アイコンとメニューが消えます)。

メニュー項目にオプションがあり、正常に機能し、LSUIElement をフォアグラウンド アプリに変換します (関数[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]とを使用します[NSApp activateIgnoringOtherApps:YES])。

ユーザーがアプリをダブルクリックすると、私の問題が発生します。[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]私はデリゲートメソッドで再び使用しapplicationWillUnhide:(NSNotification *)notificationますが、表示されないメニューを除いてすべてうまくいきます。別のアプリに移動してから戻ってきた場合、メニューが表示されます。いろいろな方法を試してみましたが、良い方法が見つかりませんでした。

私が知りたいのは、ユーザーがアプリをダブルクリックしたときに呼び出されるデリゲート メソッド、またはその瞬間に呼び出される関数です。関数で を使用するのは遅すぎるNSApplicationと思うからです。setActivationPolicy:applicationWillUnhide

4

2 に答える 2

0

通常のアプリケーションをLSUIElementに変換するには、

ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToUIElementApplication);

そしてそれをフォアグラウンドに戻すには:

ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
于 2012-10-15T15:50:44.420 に答える