Permettre à AppleScript de piloter mon application
HollowMan
Membre
Bonjour à tous,
Je souhaiterais pouvoir piloter mon application avec AppleScript. Je n'ai pas besoin de grand chose, uniquement d'une commande avec un argument texte.
Après lecture de kilomètres de doc, j'ai commencé par activer AppleScript dans le fichier Info.plist, puis ait créé mon fichier sdef comme suit:
Du côté Obj-C, ma classe ressemble à ca:
Pour l'instant donc, je ne voudrais que récupérer le directParameter, mais lorsque j'exécute mon AppleScript, il me dit "Some parameter is missing for RarchiveIt".
Voici le code AppleScript, tout ce qui me parait de plus banal:
Si je passe le direct parameter en optinnal dans le fichier sdef, il m'exécute bien mon code, mais écrit dans le log "(null)".
Je me retrouve complètement bloqué, et je n'arrive pas à voir d'où provient mon erreur
Merci par avance !
Je souhaiterais pouvoir piloter mon application avec AppleScript. Je n'ai pas besoin de grand chose, uniquement d'une commande avec un argument texte.
Après lecture de kilomètres de doc, j'ai commencé par activer AppleScript dans le fichier Info.plist, puis ait créé mon fichier sdef comme suit:
<?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd"><br /><dictionary title="RarMachine Terminology"><br /> <suite name="RarMachine Suite" code="RarM" description="Common classes for RarMachine."><br /> <command name="RarchiveIt" code="aevtrarm" description="Launches a compression." id="rarm"><br /> <cocoa class="RMAppleScriptHandler"/><br /> <direct-parameter description="Blabla." type="file"/><br /> </command><br /> </suite><br /></dictionary>
Du côté Obj-C, ma classe ressemble à ca:
@interface RMAppleScriptHandler : NSScriptCommand {<br /> <br />}<br /><br />-(id)performDefaultImplementation;<br /><br />@end<br /><br />@implementation RMAppleScriptHandler<br /><br />-(id)performDefaultImplementation<br />{<br /> NSLog(@"%@", [self directParameter]);<br /> return(nil);<br />}<br /><br />@end
Pour l'instant donc, je ne voudrais que récupérer le directParameter, mais lorsque j'exécute mon AppleScript, il me dit "Some parameter is missing for RarchiveIt".
Voici le code AppleScript, tout ce qui me parait de plus banal:
RarchiveIt "/plop"
Si je passe le direct parameter en optinnal dans le fichier sdef, il m'exécute bien mon code, mais écrit dans le log "(null)".
Je me retrouve complètement bloqué, et je n'arrive pas à voir d'où provient mon erreur
Merci par avance !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai fait une pause de quelques heures, quitté Xcode et L'AppleScript Editor, et quand j'ai réouvert, tout fonctionnait.
Je reste dubitatif... ???
Bon, je suppose que dans le info.plist tu as bien mis les deux définitions:
La doc est en effet Kilométrique! et pas toujours très claire. Ou claire pour ceux qui savent!
Ma petite expérience me dit que, pour être sur que ça marche, il faut, sur une machine juste démarrée, lancer directement le script d'appel et de commande de l'application (application non ouverte bien sur). Bien vérifier qu'il n'y a plus qu'une version de l'appli dans le Disque dur, de préférence la version 'Release'.
J'avais en effet plusieurs applications du même nom, mais j'avais précisé le chemin dans le telle application. Cela n'aurait-il pas suffit, et le gredin serait-il allé chercher une autre version de mon appli?
Donc on ne voit pas réellement comment ça marche. Les principes sont énoncés dans la doc, le détail n'est pas développé.
J'ai eu le même problème que toi. Mon impression(??) est que le "System Event" possède un cache et ne relit pas (ou pas toujours) les .sdef déjà lus! De plus, il m'a semblé que le cache était vide après un re-boot. Donc, re-booter pour faire les essais.