J'ai vu ce fil sur la manière d'exécuter des commandes de terminaux à partir d'une application de cacao. Mais je veux réellement lancer Terminal.app dans un répertoire spécifié.
Je sais que ce qui suit ne fonctionne pas: p>
[[NSWorkspace sharedWorkspace] openFile:folderPath withApplication:@"Terminal"];
5 Réponses :
Je ne sais pas s'il y a un moyen de le faire en cacao uni, mais dans AppleScript, il est assez trivial
Je ne connais pas vraiment AppleScript, mais je parie que vous pourriez l'utiliser pour cela. P>
Si le répertoire du terminal est identique à chaque fois, vous pouvez simplement créer un fichier .sh exécutable avec une commande CD code> et faire que l'argument OpenFile. P>
Vous pouvez utiliser AppleScript à partir de cacao comme ceci:
NSString *s = [NSString stringWithFormat: @"tell application \"Terminal\" to do script \"cd %@\"", folderPath]; NSAppleScript *as = [[NSAppleScript alloc] initWithSource: s]; [as executeAndReturnError:nil];
Bien que peut-être surkill pour cette utilisation, le pont de script ( développeur.apple.com/mac/library/documentation/cocoa/concept ual / ... ) est une bonne solution pour communiquer avec des applications externes via Appscript dans les applications de l'objectif-C.
Faites attention aux dossiers avec des guillemets ou des espaces d'entre eux
Y a-t-il un moyen de ne pas montrer l'application terminale? Le pont de script peut-il atteindre ce comportement?
Le chemin du dossier doit être cité comme ceci ou cette commande ne fonctionnera pas correctement: @ "dites application \" terminal \ "pour faire script \" cd \\\ "% @ \\\" \ "" Code>
Les réponses existantes suggérant à l'aide de la commande code> CD code> sont super. De plus, je vous recommande de vérifier la source à l'application CDTO pour un excellent exemple. CDTO est une application mini rapide qui ouvre une fenêtre Terminal.app CD'd à la fenêtre Finder Front. Cette application est conçue (y compris l'icône de l'informatique) à placer dans la barre d'outils du Finder Window. P>
Vous pouvez utiliser l'API (désormais obsolète) AppleEvent Carbon API pour envoyer un événement "DO Script" à Terminal.app: FORMULAIRE FORMULAIRE ici .
Notez que terminal.app doit être lancé avec Comme suggéré par un commentaire, cela peut être facilement porté au plus moderne API de script . P> p> - [Nsworkspace LaunchPlication:] code> si ce n'est pas en cours d'exécution.
Si vous le souhaitez, il peut être mis au premier plan avec
- [NSApplication ActivatewithOptions:] code> p>