2012-01-03 9 views

回答

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

寫這類似於調用NSWorkspace的'noteFileSystemChanged:'方法? – radj 2017-01-26 09:02:40

+0

@radj是它的相似。它對你有用嗎? – 2017-01-27 04:11:20

+0

間歇性地失敗。也許我應該嘗試這個序列。 PS,我似乎無法提供你。 – radj 2017-01-27 07:11:16

相關問題