Регистрация службы текста
Помимо стандартных записей реестра сервера com в proc, текстовая служба должна зарегистрировать себя в службе text Services Framework (TSF), чтобы она была доступна для использования с приложением. TSF предоставляет интерфейс ITfInputProcessorProfiles и интерфейс ITfCategoryMgr для упрощения процесса регистрации.
Поставщики текстовых служб также должны предоставлять цифровые подписи с двоичными исполняемыми файлами. См. общие сведения о подписи кода.
Регистрация службы текста
Текстовая служба регистрируется в TSF путем вызова ITfInputProcessorProfiles::Register с идентификатором класса текстовой службы. Экземпляр интерфейса ITfInputProcessorProfiles получается путем вызова CoCreateInstance с CLSID_TF_InputProcessorProfiles.
В следующем примере показано, как создать объект ITfInputProcessorProfiles и зарегистрировать текстовую службу.
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
Регистрация языковых профилей
Текстовая служба доступна только в том случае, если приложение имеет фокус и соответствующий язык выбран на панели языка. Чтобы упростить эту задачу, TSF требует, чтобы текстовая служба регистрилась для всех поддерживаемых языков. Служба текста регистрирует свои языковые профили путем вызова ITfInputProcessorProfiles::AddLanguageProfile с идентификатором класса службы текста, идентификатором языка профиля и текстовой службой, определенной GUID, которая определяет профиль языка.
Профиль языка можно удалить, вызвав ITfInputProcessorProfiles::RemoveLanguageProfile. ITfInputProcessorProfiles::Unregister удаляет все языковые профили для службы текста; При удалении текстовой службы требуется удаление отдельных языковых профилей.
Регистрация категорий
Текстовая служба также должна зарегистрировать категорию, к которую применяется служба текста. Например, если служба текста предоставляет сведения о атрибутах, она должна зарегистрировать себя в качестве поставщика атрибутов отображения путем вызова ITfCategoryMgr::RegisterCategory с идентификатором класса текстовой службы для первого параметра, GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER для второго параметра и идентификатора класса текстовой службы еще раз для третьего параметра. Возможные категории перечислены в разделе предопределенные значения категорий.
Удалите ранее зарегистрированные категории путем вызова ITfCategoryMgr::UnregisterCategory. ITfInputProcessorProfiles::Unregister удаляет все категории для текстовой службы; При удалении текстовой службы необходимо удалить отдельные категории.