Question

Je me demandais s'il y a un moyen de vider le contenu du programme de la poubelle. Je suis actuellement la suppression des fichiers qui y sont situés en utilisant:

    NSFileManager *manager = [NSFileManager defaultManager];
    [manager removeItemAtPath:fileToDelete error:nil];

Cependant, après que j'utilise cette opération, chaque fois que je glisser un fichier à la poubelle, je suis invité avec le message:

Êtes-vous sûr de vouloir supprimer « Xxxxxx.xxx »? Cet article sera supprimé immédiatement. Vous ne pouvez pas annuler cette action.

Cela dure jusqu'à ce que je me connecte soit sur ou sudo rm -rf la poubelle.

Merci!

Était-ce utile?

La solution

Vous pouvez mettre des choses à la poubelle avec NSWorkspace , mais la suppression de la poubelle est une sorte de non non pour les programmes de sorte que vous n'allez trouver une API. Donc, votre meilleur pari utilise le ScriptBridge.

Ajouter ScriptingBridge.framework à votre cible de génération, et générer un fichier d'en-tête pour le Finder en utilisant:

sdef /System/Library/CoreServices/Finder.app/ | sdp -fh --basename Finder

Ensuite, vous pouvez demander Finder pour inviter l'utilisateur à vider la corbeille:

#import "Finder.h"

FinderApplication *finder = [SBApplication applicationWithBundleIdentifier:@"com.apple.Finder"];

// activate finder
[finder activate];

// wait a moment (activate is not instant), then present alert message
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  [finder emptySecurity:security];
});

Voir la Scripting documentation Pont pour plus de détails.


de Xcode 7.3, si vous essayez cela avec Swift vous obtiendrez des erreurs de l'éditeur de liens en essayant de trouver les classes définies dans Finder.h. Donc, vous devez créer une enveloppe Objective-C.

Autres conseils

Vous pouvez essayer d'utiliser AppleScript pour le faire:

NSString* appleScriptString = @"tell application \"Finder\"\n"
                              @"if length of (items in the trash as string) is 0 then return\n"
                              @"empty trash\n"
                              @"repeat until (count items of trash) = 0\n"
                              @"delay 1\n"
                              @"end repeat\n"
                              @"end tell";
NSAppleScript* emptyTrashScript = [[NSAppleScript alloc] initWithSource:appleScriptString];

[emptyTrashScript executeAndReturnError:nil];
[emptyTrashScript release];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top