Existe-t-il un appel API Coca/obj-C pour imiter l'action "Se connecter au serveur" dans le Finder? C'est possible avec Automater, donc il semble que Finder a un crochet quelque part.Existe-t-il un moyen de se connecter par programme à un serveur distant à partir de Cocoa?
Répondre
se trouve qu'il ya une ancienne fonction de carbone (ne peut pas trouver un équivalent de cacao) appelé FSMountServerVolumeSync
qui fait ce que je cherchais. Vous pouvez fournir et smb://
URL et informations d'identification de connexion.
OSStatus FSMountServerVolumeSync (
CFURLRef url,
CFURLRef mountDir,
CFStringRef user,
CFStringRef password,
FSVolumeRefNum *mountedVolumeRefNum,
OptionBits flags
);
Ce n'est peut-être pas le meilleur chemin, mais ne pouvez-vous pas utiliser mount
?
Un moyen facile consiste simplement à exécuter du code applescript. Je vais vous montrer 2 choix. Ce premier est la façon standard d'afficher cette fenêtre du Finder à partir d'applescript.
NSString* cmd = @"choose URL";
La fenêtre qui est bare-bones, donc vous pouvez réellement ouvrir la fenêtre du Finder avec cette commande ...
NSString* cmd = @"tell application \"Finder\" to activate\ndelay 0.2\ntell application \"System Events\" to keystroke \"k\" using command down";
Après avoir choisi l'une des chaînes « de cmd », vous pouvez exécuter que le code AppleScript avec ce ...
NSAppleScript* theScript = [[NSAppleScript alloc] initWithSource:cmd];
[theScript executeAndReturnError:nil];
[theScript release];
Cela fonctionne, mais votre script a mal saisi "application" après "delay 0.2". – Marku
Pour un serveur distant (comme 'smb: //')? Je suis assez sûr que 'mount' est pour les périphériques locaux seulement. – eduffy
Fonctionne sur Linux au moins - vous le spécifiez comme //server.name/share/path/to/folder –