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.