2012-01-03 5 views
1

Я использую метод класса NSWorkspace для настройки пользовательского значка для файла и каталога. Моя проблема заключается в том, что Finder не отражает изменение значка в виде значка до перезапуска.Редактирование измененного пользовательского значка в значке (IKImageBrowserView) в Finder

вид Icon:
enter image description here

enter image description here

Вид списка (контурный вид):
enter image description here

ответ

1

От Carbon development tips and tricks.

Вы должны послать kAESync AppleEvent в Finder передавая ей псевдоним файла, который был изменен.

Ниже код написан JWWalker

OSStatus SendFinderSyncEvent(const FSRef* inObjectRef) 
{ 
    AppleEvent theEvent = { typeNull, NULL }; 
    AppleEvent replyEvent = { typeNull, NULL }; 
    AliasHandle itemAlias = NULL; 
    const OSType kFinderSig = 'MACS'; 

OSStatus err = FSNewAliasMinimal(inObjectRef, &itemAlias); 
if (err == noErr) 
{ 
    err = AEBuildAppleEvent(kAEFinderSuite, kAESync, typeApplSignature, 
     &kFinderSig, sizeof(OSType), kAutoGenerateReturnID, 
     kAnyTransactionID, &theEvent, NULL, "'----':alis(@@)", itemAlias); 

    if (err == noErr) 
    { 
     err = AESendMessage(&theEvent, &replyEvent, kAENoReply, 
      kAEDefaultTimeout); 

     AEDisposeDesc(&replyEvent); 
     AEDisposeDesc(&theEvent); 
    } 

    DisposeHandle((Handle)itemAlias); 
} 

    return err; 
} 
+0

Это похоже на вызов 'noteFileSystemChanged NSWorkspace в:' метод? – radj

+0

@radj да это похоже. Он работает на вас? –

+0

С перерывами, он терпит неудачу. Возможно, я должен попробовать эту последовательность. PS, я не могу показаться вам. – radj

 Смежные вопросы

  • Нет связанных вопросов^_^