文字服務註冊
除了標準 COM 同進程伺服器登錄專案之外,文字服務也必須向 Text Services Framework (TSF) 註冊本身,以便可與應用程式搭配使用。 TSF 提供 ITfInputProcessorProfiles 和 ITfCategoryMgr 介面,以簡化註冊程式。
文字服務提供者也應該提供數位簽章及其二進位可執行檔。 請參閱 程式碼簽署簡介。
註冊文字服務
文字服務會藉由呼叫 ITfInputProcessorProfiles::Register 與文字服務的類別識別碼,向 TSF 註冊本身。 使用 CLSID_TF_InputProcessorProfiles 呼叫CoCreateInstance來取得ITfInputProcessorProfiles介面的實例。
下列範例示範如何建立 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 會移除文字服務的所有類別;卸載文字服務時,它必須移除個別類別。