Поделиться через


Регистрация службы текста

Помимо стандартных записей реестра сервера 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 удаляет все категории для текстовой службы; При удалении текстовой службы необходимо удалить отдельные категории.