2015-01-22 4 views
0

나는 .app입니다. plist.Info을 편집하여 -P "main"의 명령 줄 인수가 경로에 있으면 내 리소스 폴더에있는 다른 아이콘을 사용합니다. 그리고 사용자가 마우스 오른쪽 버튼을 클릭하여 "도크에 보관"이라고 말하면 명령 줄 인수로 도킹 상태를 유지하므로 다음 클릭시 동일한 명령 줄 인수로 실행됩니다.plist.Info 앱이 명령 줄 인수를 기반으로 아이콘을 사용하도록

이것이 가능합니까?

최악의 캐스팅 시나리오 : 경로를 검사하여 명령 줄 인수가 있는지 확인하는 모든 객관적인 방법? 그런 다음 setApplicationIconImage을 프로그래밍 방식으로 실행합니다 (위의 경우 불가능한 경우 최악의 경우를 의미 함). (또한 NSWindow miniwindowImage를 사용하여 프로그래밍 방식으로 소형 창을 가져 와서 자신의 미니 아이콘을 그려야하며 향후 알림을 수신해야합니다. NSWindowWillMiniaturizeNotification 그리고 알림이 실행될 때 무승부를 수행하므로 최악의 시나리오입니다.)

+0

업데이트 내 답변 – markhunte

답변

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 
    } 

: 당신의 인수 검사로 만든

전화 .

+0

답변을 시도해 주셔서 대단히 감사하고 이해하지 못했을 때 명확함을 묻는 질문에 대해 감사 드려 죄송합니다. 이 응용 프로그램은'Applications/Firefox.app'입니다. 터미널에서 명령 줄 인수'-P "profile name"-no-remote'를 사용하여 터미널에서 실행하면 병렬로 프로필이 실행됩니다. – Noitidart

+0

나는 이것을 위해 별도의 도크를 유지하려고 노력하고있다. 현재 도크의 아이콘을 클릭하면 Firefox가 열리지 만 도크에 보관하면 일반 (명령 줄 인수 포함)이 열립니다. 나 또한 그들에게 맞춤 이미지를 설정하고 싶다. 'setApplicationIconImage'는 미니 버전의 아이콘의 미니 버전을 변경하지 않습니다 :( – Noitidart

+1

@Noitidart Firefox.app의 새로운 인스턴스를 시작할 명령 행 응용 프로그램을 작성하고, 자신의 아이콘 그리고 도킹 아이템. 확실하지 않은 일이 있으신가요? – markhunte