Partager via


Inscription au service de texte

En plus des entrées de registre com in-proc serveur standard, un service de texte doit s’inscrire auprès de l’infrastructure TSF (Text Services Framework) afin qu’il puisse être utilisé avec une application. TSF fournit l’interface ITfInputProcessorProfiles et ITfCategoryMgr pour simplifier le processus d’inscription.

Les fournisseurs de services de texte doivent également fournir des signatures numériques avec leurs exécutables binaires. Consultez Présentation de la signature de code.

Inscription du service de texte

Un service de texte s’inscrit auprès de TSF en appelant ITfInputProcessorProfiles::Register avec l’identificateur de classe du service de texte. Une instance de l’interface ITfInputProcessorProfiles est obtenue en appelant CoCreateInstance avec CLSID_TF_InputProcessorProfiles.

L’exemple suivant montre comment créer un objet ITfInputProcessorProfiles et inscrire le service de texte.

BOOL RegisterTextService(CLSID clsidTextService)
{
    HRESULT hr;
    ITfInputProcessorProfiles *pInputProcessProfiles;

    hr = CoCreateInstance(  CLSID_TF_InputProcessorProfiles, 
                            NULL, 
                            CLSCTX_INPROC_SERVER,
                            IID_ITfInputProcessorProfiles, 
                            (LPVOID*)&pInputProcessProfiles);

    if (hr != S_OK)
    {
        return FALSE;
    }

    hr = pInputProcessProfiles->Register(clsidTextService);

    pInputProcessProfiles->Release();
    
    return (S_OK == hr);
}

ITfInputProcessorProfiles::Unregister

Inscription de profils linguistiques

Un service de texte n’est disponible que lorsqu’une application a le focus et que la langue appropriée est sélectionnée dans la barre de langue. Pour faciliter cela, TSF exige qu’un service de texte s’inscrive lui-même pour toutes les langues qu’il prend en charge. Le service de texte inscrit ses profils linguistiques en appelant ITfInputProcessorProfiles::AddLanguageProfile avec l’identificateur de classe de service de texte, l’identificateur de langue du profil et un GUID défini par le service de texte qui identifie le profil de langue.

Un profil de langue peut être supprimé en appelant ITfInputProcessorProfiles::RemoveLanguageProfile. ITfInputProcessorProfiles::Unregister supprime tous les profils de langue pour le service de texte ; lorsqu’un service de texte est désinstallé, il nécessite la suppression des profils linguistiques individuels.

Inscription de catégories

Un service de texte doit également inscrire la catégorie à laquelle le service de texte s’applique. Par exemple, si le service de texte fournit des informations d’attribut d’affichage, il doit s’inscrire en tant que fournisseur d’attributs d’affichage en appelant ITfCategoryMgr::RegisterCategory avec l’identificateur de classe du service de texte pour le premier paramètre, GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER pour le deuxième paramètre et l’identificateur de classe du service de texte à nouveau pour le troisième paramètre. Les catégories possibles sont répertoriées sous Valeurs de catégorie prédéfinies.

Supprimez les catégories précédemment inscrites en appelant ITfCategoryMgr::UnregisterCategory. ITfInputProcessorProfiles::Unregister supprime toutes les catégories pour le service de texte ; lorsqu’un service de texte est désinstallé, il doit supprimer les catégories individuelles.