9
votes

Ouvrez une fenêtre de terminal dans un dossier spécifié d'une application de cacao

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"];


0 commentaires

5 Réponses :


2
votes

Je ne sais pas s'il y a un moyen de le faire en cacao uni, mais dans AppleScript, il est assez trivial xxx


0 commentaires

-1
votes

Je ne connais pas vraiment AppleScript, mais je parie que vous pourriez l'utiliser pour cela.

Si le répertoire du terminal est identique à chaque fois, vous pouvez simplement créer un fichier .sh exécutable avec une commande CD et faire que l'argument OpenFile.


0 commentaires

14
votes

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];


4 commentaires

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 \\\ "% @ \\\" \ ""



0
votes

Les réponses existantes suggérant à l'aide de la commande CD 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.


0 commentaires

0
votes

Vous pouvez utiliser l'API (désormais obsolète) AppleEvent Carbon API pour envoyer un événement "DO Script" à Terminal.app: XXX

FORMULAIRE FORMULAIRE ici . Notez que terminal.app doit être lancé avec - [Nsworkspace LaunchPlication:] si ce n'est pas en cours d'exécution. Si vous le souhaitez, il peut être mis au premier plan avec - [NSApplication ActivatewithOptions:]

Comme suggéré par un commentaire, cela peut être facilement porté au plus moderne API de script .


0 commentaires