Correspondre avec une autre Appli.
tablier
Membre
Dans une appli ASStudio, la récupération de donné d'une autre appli passe par:
tell application "machin"
...... récup des données .....
end tell.
Comment fait-on pour faire la même chose en cocoa? j'ai envisagé 2 solutions:
1) Ecrire une routine en applescript et l'appeller depuis mon programme.
2) Interroger directement l'appli. (Apple events?)
Je ne trouve d'exemple pour aucun des deux cas!
Notez que l'appli que je veux interroger possède un dictionnaire et que je souhaite avoir en retour une dizaine données de natures diverses (string, integer...).
Les conseils et surtout les exemples seront les bien venus.
tell application "machin"
...... récup des données .....
end tell.
Comment fait-on pour faire la même chose en cocoa? j'ai envisagé 2 solutions:
1) Ecrire une routine en applescript et l'appeller depuis mon programme.
2) Interroger directement l'appli. (Apple events?)
Je ne trouve d'exemple pour aucun des deux cas!
Notez que l'appli que je veux interroger possède un dictionnaire et que je souhaite avoir en retour une dizaine données de natures diverses (string, integer...).
Les conseils et surtout les exemples seront les bien venus.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Sinon Cocoa dispose aussi de mécanismes permettant de faire ça (les objets distribués), mais cela suppose que tu connaisses le 'dictionnaire' de l'appli, et ce n'est que peu communiqué.
Le dictionnaire de l'appli, est-ce bien celui que l'on peut lire sous Xcode,
ou bien y en a t-il un autre?
dans ton cas je pense plus a "intercommunication entre appli" qui un principe tres puissant pour faire jaser deux application sans aucun script.
il existe les NSPipe pour les flux de donnée souvent associé à NSTask, mais je pense que tu devrais aller voir un document :
evoqué par Renaud, les distributed object:
http://developer.apple.com/documentation/Cocoa/Conceptual/DistrObjects/index.html
Dans le premier, les objets distribués sont une solution. Dans le second si l'appli est pilotable par AppleScript, c'est la solution. L'utilisatation des objets distribués implique en effet que le développeur ait documenté les objets et autres connections qu'il met à disposition, mais je n'ai jamais vu cela.
Genose: les NSPipe et NSTask sont utilisés pour lancer des "commandes unix" dans une application, pour les objets distribués on utilise plutot NSDistantObject et NSConnection.
Bonne question: je veux correspondre avec une application créée par un autre et dont je n'ai
pas les sources (CDFinder). La solution semble donc être l'appel à CDFinder par un script. J'ai
déjà réalisé cela dans mon appli réalisée sous AppleScript Studio (Incremental). Mais pour
progresser, j'essaie de refaire cette application entièrement en cocoa. Ce qui m'a posé
problème, c'est justement la manière d'interroger CDF et donc d'appeler un script depuis une méthode en Objective-C. (Faut-il créer un objet spécifique? utiliser un delegate de NSApp?
Créer un objet NSAppleScript? Utiliser l'objet AppleScript dans interface builder? Utiliser
un NSAppleEventDescriptor pour récupérer les réponses? ..........etc ).
Je sais, ça fait beaucoup de questions!
Amicalement.