Compartilhar via


Registro do Serviço de Texto

Além das entradas padrão do registro do servidor COM no proc, um serviço de texto deve se registrar no TSF (Text Services Framework) para que ele possa estar disponível para uso com um aplicativo. O TSF fornece o ITfInputProcessorProfiles e interface de ITfCategoryMgr para simplificar o processo de registro.

Os provedores de serviços de texto também devem fornecer assinaturas digitais com seus executáveis binários. Consulte Introdução aode Assinatura de Código.

Registrando o Serviço de Texto

Um serviço de texto se registra no TSF chamando ITfInputProcessorProfiles::Registrar com o identificador de classe do serviço de texto. Uma instância da interface ITfInputProcessorProfiles é obtida chamando CoCreateInstance com CLSID_TF_InputProcessorProfiles.

O exemplo a seguir demonstra como criar um objeto ITfInputProcessorProfiles e registrar o serviço de texto.

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

Registrando perfis de idioma

Um serviço de texto só está disponível quando um aplicativo tem o foco e o idioma adequado é selecionado na barra de idiomas. Para facilitar isso, o TSF requer que um serviço de texto se registre para todos os idiomas compatíveis. O serviço de texto registra seus perfis de idioma chamando ITfInputProcessorProfiles::AddLanguageProfile com o identificador de classe do serviço de texto, esse identificador de idioma do perfil e um serviço de texto definido GUID que identifica o perfil de idioma.

Um perfil de idioma pode ser removido chamando ITfInputProcessorProfiles::RemoveLanguageProfile. ITfInputProcessorProfiles::Unregister remove todos os perfis de idioma para o serviço de texto; quando um serviço de texto é desinstalado, ele requer a remoção dos perfis de idioma individuais.

Registrando categorias

Um serviço de texto também deve registrar a categoria à qual o serviço de texto se aplica. Por exemplo, se o serviço de texto fornecer informações de atributo de exibição, ele deverá se registrar como um provedor de atributo de exibição chamando ITfCategoryMgr::RegisterCategory com o identificador de classe do serviço de texto para o primeiro parâmetro, GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER para o segundo parâmetro e o identificador de classe do serviço de texto novamente para o terceiro parâmetro. As categorias possíveis são listadas em valores de categoria predefinidos.

Remova categorias registradas anteriormente chamando ITfCategoryMgr::UnregisterCategory. ITfInputProcessorProfiles::Unregister remove todas as categorias do serviço de texto; quando um serviço de texto é desinstalado, ele deve remover as categorias individuais.