От 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;
}
Это похоже на вызов 'noteFileSystemChanged NSWorkspace в:' метод? – radj
@radj да это похоже. Он работает на вас? –
С перерывами, он терпит неудачу. Возможно, я должен попробовать эту последовательность. PS, я не могу показаться вам. – radj