Association type de fichier <-> Application

melaure

Chasseur de bobos
Club iGen
24 Octobre 2001
25 786
2 124
55
Le Grand Lyon
Ou sont stockées ces données ? Comment récupérer dans un shell ou un programme le nom de l'application qui ouvre un document dont on connait l'extension (.html par exemple) ?
 
a priori vu le code il s'agit de la methode via les librairies carbon, c'est à dire à la manière MacOS classique. Il doit exister sous OS X quelquechose d'équivalent à la base de registre qui l'application par défault à ouvrir pour un "fichier.toto" .
Ce n'est apparement pas dans les préférences systèmes (com.apple.*.plist) que j'ai parcourues, donc ou est-ce ?



P.S. : Myriad c'est bien l'éditeur de Melody et Harmony assistant ?
 
Bonjour,

Il me semble que LSGetApplicationForInfo (pur OS X) doit faire le travail.

/*
* LSGetApplicationForInfo()
*
* Summary:
* Return the application used to open items with particular data.
*
* Discussion:
* Consults the binding tables to return the application that would
* be used to open items with type, creator, and/or extension as
* provided if they were double-clicked in the Finder. This
* application will be the default for items like this if one has
* been set. If no application is known to LaunchServices suitable
* for opening such items, kLSApplicationNotFoundErr will be
* returned. Not all three input parameters can be NULL at the same
* time nor can both output parameters be NULL at the same time.
*
* Parameters:
*
* inType:
* The file type to consider. Can be kLSUnknownType.
*
* inCreator:
* The file creator to consider. Can be kLSUnknownCreator.
*
* inExtension:
* The file name extension to consider. Can be NULL.
*
* inRoleMask:
* Whether to return the editor or viewer for inItemRef. If you
* don't care which, use kLSRolesAll.
*
* outAppRef:
* Filled in with the FSRef of the application if not NULL.
*
* outAppURL:
* Filled in with the CFURLRef of the application if not NULL.
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available in CarbonLib 1.x
* Mac OS X: in version 10.0 or later
*/

Doit convenir a ce que tu cherche.

Cordialement

PS: Oui. Je suis un des deux auteurs.
 
Exactement ce qu'il me fallait. La méthode va piocher l'info dans com.apple.Launchservices.

Cependant il y encore peu d'applications qui utilisent cette manières et cette liste est complété lorsque l'on fait des associations manuelles dans le finder entre un type d'extension et une appli. La plupart des applis conservent type/créateur. Mais peut-être est-ce voué à disparaitre ...

Merci