Compartilhar via


Registro do Serviço de Texto

Além das entradas padrão do registro de servidor COM in-proc, um serviço de texto deve se registrar no TSF (Text Services Framework) para que possa estar disponível para uso com um aplicativo. O TSF fornece a interface ITfInputProcessorProfiles e 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 à assinatura de código.

Registrando o serviço de texto

Um serviço de texto registra-se no TSF chamando ITfInputProcessorProfiles::Register 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 exige 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 de serviço de texto, esse identificador de idioma do perfil e um GUID definido pelo serviço de texto 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á registrar-se 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.