Registrierung des Textdiensts
Zusätzlich zu den standardmäßigen COM-In-Proc-Serverregistrierungseinträgen muss sich ein Textdienst beim Text Services Framework (TSF) registrieren, damit er für die Verwendung mit einer Anwendung verfügbar ist. TSF stellt die ITfInputProcessorProfiles - und ITfCategoryMgr-Schnittstelle bereit, um den Registrierungsprozess zu vereinfachen.
Textdienstanbieter sollten auch digitale Signaturen mit ihren binären ausführbaren Dateien bereitstellen. Weitere Informationen finden Sie unter Einführung in die Codesignatur.
Registrieren des Textdiensts
Ein Textdienst registriert sich bei TSF, indem er ITfInputProcessorProfiles::Register mit dem Klassenbezeichner des Textdiensts aufruft. Eine instance der ITfInputProcessorProfiles-Schnittstelle wird durch Aufrufen von CoCreateInstance mit CLSID_TF_InputProcessorProfiles abgerufen.
Im folgenden Beispiel wird veranschaulicht, wie Sie ein ITfInputProcessorProfiles-Objekt erstellen und den Textdienst registrieren.
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
Registrieren von Sprachprofilen
Ein Textdienst ist nur verfügbar, wenn eine Anwendung den Fokus hat und die richtige Sprache in der Sprachleiste ausgewählt ist. Um dies zu erleichtern, erfordert TSF, dass sich ein Textdienst für alle unterstützten Sprachen registriert. Der Textdienst registriert seine Sprachprofile, indem er ITfInputProcessorProfiles::AddLanguageProfile mit dem Textdienstklassenbezeichner, dem Sprachbezeichner des Profils und einer textdienstdefinierten GUID aufruft , die das Sprachprofil identifiziert.
Ein Sprachprofil kann durch Aufrufen von ITfInputProcessorProfiles::RemoveLanguageProfile entfernt werden. ITfInputProcessorProfiles::Unregister entfernt alle Sprachprofile für den Textdienst; Wenn ein Textdienst deinstalliert wird, müssen die einzelnen Sprachprofile entfernt werden.
Registrieren von Kategorien
Ein Textdienst muss auch die Kategorie registrieren, für die der Textdienst gilt. Wenn der Textdienst beispielsweise Anzeigeattributinformationen bereitstellt, muss er sich selbst als Anzeigeattributanbieter registrieren, indem er ITfCategoryMgr::RegisterCategory mit dem Klassenbezeichner des Textdiensts für den ersten Parameter, GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER für den zweiten Parameter und den Klassenbezeichner des Textdiensts erneut für den dritten Parameter aufruft. Die möglichen Kategorien sind unter Vordefinierte Kategoriewerte aufgeführt.
Entfernen Sie zuvor registrierte Kategorien, indem Sie ITfCategoryMgr::UnregisterCategory aufrufen. ITfInputProcessorProfiles::Unregister entfernt alle Kategorien für den Textdienst; wenn ein Textdienst deinstalliert wird, muss er die einzelnen Kategorien entfernen.