Standard additions

tabliertablier Membre
14:46 modifié dans API AppKit #1
[size=9pt]je refais en objective-C un ancien programme écrit en AppleScript studio. Pour cela, j'ai remplacé l'appel:[/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]par un appleEvent envoyer au Finder dont le codage ressemble à  (sans le traitement d'erreur):[/size]
[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]
[size=9pt]
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]

Réponses

  • NoNo Membre
    14:46 modifié #2
    dans 1215355810:

    ET JE NE TROUVE PAS COMMENT FAIRE CELA!!!!!  :-\\

    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 ?
  • tabliertablier Membre
    14:46 modifié #3
    Eh bien, mon problème est un problème d'apprentissage!!
    Sinon, j'ai obtenu ce que je voulais avec fullPathForApplication: de NSWorkSpace.
    J'ai aussi écrit le script:
    tell application "CDFinder"
      return path to
    end tell
    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

  • tabliertablier Membre
    14:46 modifié #4
    Je reprends ce poste car j'ai écrit des co...ies.  B) (le privilège de l'âge?)
    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?  :(
  • 14:46 modifié #5
    Tu as déjà  utilisé les events descriptor auparavant ? Si non, regarde le framework EyeTunes. Y'a la source du framework dispo si ça peut t'aider à  y voir plus clair.
    Après moi.. j'en sais rien  ;D J'ai trouvé un framework qui fait tout pour moi alors autant en profiter
  • tabliertablier Membre
    14:46 modifié #6
    J'ai téléchargé et examiné les sources de EyesTunes. Cela ne solutionne pas mon problème. Dommage, merci quand même!  :P
    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....
Connectez-vous ou Inscrivez-vous pour répondre.