Standard additions
tablier
Membre
[size=9pt]je refais en objective-C un ancien programme écrit en AppleScript studio. Pour cela, j'ai remplacé l'appel:[/size]
Cela marche très bien SAUF LA PREMIERE FOIS APRES L'ALLUMAGE DE L'ORDINATEUR!!!!.
Après analyse, je trouve que 'sysonfo4' est défini dans les "Standard Additions", et après essais je constate qu'après avoir lancé l'éditeur de script ou fait exécuter un script quelconque, je n'ai plus d'erreur!
J'en conclus que le "system event" ne connait pas les "Standard Additions" et que je dois les faire reconnaitre avant d'envoyer mes AppleEvent.
ET JE NE TROUVE PAS COMMENT FAIRE CELA!!!!! :-\\
Qui a une idée?[/size]
[size=9pt]par un appleEvent envoyer au Finder dont le codage ressemble à (sans le traitement d'erreur):[/size][size=9pt]set chemin to "Base:Applications:CDFinder 5:CDFinder.app" as alias
tell application "Finder"
return (info for chemin)
end tell[/size]
[size=9pt][size=9pt]FSRef CDF_FSRef ; // le FSRef de CDFinder
AliasHandle CDF_Alias ;
AppleEvent ouvreEvent ;
AppleEvent reponse ;
FSNewAlias(NULL, &CDF_FSRef, &CDF_Alias) ;
AEBuildAppleEvent('syso', 'nfo4', typeApplSignature, &FinderSignature,
sizeof(OSType), kAutoGenerateReturnID, kAnyTransactionID,
&ouvreEvent, NULL, @)", CDF_Alias ) ;
AESend(&ouvreEvent, &reponse, kAENoReply | kAECanInteract, kAENormalPriority,
kAEDefaultTimeout, NULL, NULL);
[/size]
Cela marche très bien SAUF LA PREMIERE FOIS APRES L'ALLUMAGE DE L'ORDINATEUR!!!!.
Après analyse, je trouve que 'sysonfo4' est défini dans les "Standard Additions", et après essais je constate qu'après avoir lancé l'éditeur de script ou fait exécuter un script quelconque, je n'ai plus d'erreur!
J'en conclus que le "system event" ne connait pas les "Standard Additions" et que je dois les faire reconnaitre avant d'envoyer mes AppleEvent.
ET JE NE TROUVE PAS COMMENT FAIRE CELA!!!!! :-\\
Qui a une idée?[/size]
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quel type d'info sur CDFinder cherches tu à obtenir ?
Ne peux tu pas utiliser une fonction système à la place d'un apple-event pour l'obtenir ?
Sinon, j'ai obtenu ce que je voulais avec fullPathForApplication: de NSWorkSpace.
J'ai aussi écrit le script: Compilé et exécuté sous Objective-C, l'information souhaitée est dans le NSAppleEventDescriptor de retour: No problemo!
Dans mon logiciel que je transcris en Objective-C, le Finder, Toast et CDFinder sont interrogés intensivement en AppleScript, des milliers, voir des centaines de milliers de fois au total et ça devient lennnnnnnnt! C'est pourquoi j'essaie de tout passer en AppleEvent. Mais là je suis tombé sur le Problème des "standard editions" non enregistrés!
d'ou ma question. :P
Il est dit dans le doc, que sous MacOSx, les "Standard Additions" sont chargées systématiquement au lancement.
Cela ne résoud pas mon problème qui est que, après le lancement de la machine, des AppleEvents me retourne des erreurs tant que je n'ai pas ouvert l'éditeur de script ou fait exécuter un script!!!! Je note que dès que ça marche, ça ne s'arrette plus de marcher et que pour retrouver l'erreur, il faut couper la machine puis la relancer.
Si les "Standard Additions" sont effectivement chargées, alors je dois oublier de faire quelque chose au lancement de mon appli: un appel particulier ? un lien ? ajouter un framework ?
qui a une idée?
Après moi.. j'en sais rien ;D J'ai trouvé un framework qui fait tout pour moi alors autant en profiter
EyesTunes: en gros le nom du projet dit bien à quoi vont servir les méthodes du framework. La programmation est organisée pour fournir des méthodes qui créent des descripteurs, des appleEvents ....etc, ou qui les analysent. Programmation tout à fait classique orientée sur les échanges avec iTunes (version 6.0 à 7.3 apparament).
>:( Pour mon problème, je me demande si ce n'est pas un changement de thread qui me fout la m....