0

私は持ってい.appます。plist.Infoコマンドライン引数が-P "main"パスにある場合、リソースフォルダー内の別のアイコンを使用するように編集したいと思います。また、ユーザーが右クリックして「ドックに保持」と言った場合、コマンドライン引数でドックに保持されるため、次のクリックで同じコマンドライン引数で起動します。

これは可能ですか?

最悪のキャスト シナリオ: パスをチェックしてコマンド ライン引数があるかどうかを確認する客観的な方法はありますか? 次に、プログラムで実行しますsetApplicationIconImage(最悪の場合、上記が不可能な場合を意味します)(さらに、プログラムで [NSWindow miniwindowImage] を使用して縮小されたウィンドウをフェッチし、msyelf にミニ アイコンを描画し、将来の通知をリッスンする必要がNSWindowWillMiniaturizeNotificationあります。その通知が発生したときに抽選を行うため、これは最悪のシナリオです)

4

1 に答える 1

1

私はあなたを完全にフォローしているかどうか確信が持てません。

しかし、plist.Info を編集する必要はないと思いますし、それを行うのは良くないと思います。

アプリの設定ファイルに書き込みCFPreferencesSetValue、アプリがアイコンを変更するかどうかを決定するエントリを変更するだけです。

あなたの引数チェックから行われた呼び出し:

 [self changIcon:(CFBooleanRef)false];

-(void) changIcon:(CFBooleanRef)prefValue
{


    CFStringRef appID = CFSTR("com.yourApp.BundleID");
    CFStringRef Key = CFSTR("swapIcon");
    CFBooleanRef Value = prefValue ;// kCFBooleanTrue;//or kCFBooleanFalse

    // Set up the preference.
    CFPreferencesSetValue(Key,
                          Value,
                          appID,
                          kCFPreferencesCurrentUser,
                          kCFPreferencesAnyHost);

    // Write out the preference data.
    CFPreferencesSynchronize(appID,
                             kCFPreferencesCurrentUser,
                             kCFPreferencesAnyHost);

}

アイコンを変更する

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

   BOOL  swapIcon = [defaults boolForKey:@"swapIcon"];

    if (swapIcon ) {
         NSImage * b1Image = [NSImage imageNamed:@"bl1"];
         [NSApp  setApplicationIconImage:b1Image];
    }else {
        [NSApp  setApplicationIconImage:nil];//--Nil will make the app use thenormal icon
    }

より良い答えを得るには、もう少し明確に説明する必要があります。

于 2015-01-23T05:09:23.090 に答える