テキスト サービスは、標準の COM インプロセス サーバー レジストリ エントリに加えて、Text Services Framework (TSF) に登録して、アプリケーションで使用できるようにする必要があります。 TSF は、登録プロセスを簡略化するために、ITfInputProcessorProfiles および ITfCategoryMgr インターフェイス を提供します。
テキスト サービス プロバイダーは、バイナリ実行可能ファイルを含むデジタル署名も提供する必要があります。 「コード署名の概要」を参照してください。
テキスト サービスの登録
テキスト サービスは、ITfInputProcessorProfiles::Register をテキスト サービスのクラス識別子で呼び出すことによって TSF に登録します。 ITfInputProcessorProfiles インターフェイスのインスタンスは、CLSID_TF_InputProcessorProfiles CoCreateInstance を呼び出すことによって取得されます。
次の例では、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 を呼び出し、2 番目のパラメーターにGUID_TFCAT_DISPLAYATTRIBUTEPROVIDERし、3 番目のパラメーターに対してテキスト サービスのクラス識別子をもう一度呼び出して、表示属性プロバイダーとして自身を登録する必要があります。 使用可能なカテゴリは、定義済みのカテゴリ値 の一覧に表示されます。
ITfCategoryMgr::UnregisterCategory 呼び出して、以前に登録されたカテゴリを削除します。 ITfInputProcessorProfiles::Unregister はテキスト サービスのすべてのカテゴリを削除します。テキスト サービスをアンインストールする場合は、個々のカテゴリを削除する必要があります。