文字服務註冊
除了標準 COM 內部伺服器登錄專案之外,文字服務還必須向文字服務架構 (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 會移除文字服務的所有類別;卸載文字服務時,它必須移除個別類別。