テキスト サービスの登録
標準の 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 では、テキスト サービスがサポートするすべての言語に対してそれ自体を登録する必要があります。 テキスト サービスは、テキスト サービス クラス識別子、プロファイルの言語識別子、および言語プロファイルを識別するテキスト サービス定義 GUID を使用して ITfInputProcessorProfiles::AddLanguageProfileを 呼び出して、その言語プロファイルを登録します。
言語プロファイルは、 ITfInputProcessorProfiles::RemoveLanguageProfile を呼び出すことによって削除できます。 ITfInputProcessorProfiles::Unregister は、テキスト サービスのすべての言語プロファイルを削除します。テキスト サービスがアンインストールされると、個々の言語プロファイルを削除する必要があります。
カテゴリの登録
テキスト サービスでは、テキスト サービスが適用されるカテゴリも登録する必要があります。 たとえば、テキスト サービスが表示属性情報を提供する場合は、最初のパラメーターのテキスト サービスのクラス識別子を使用して ITfCategoryMgr::RegisterCategory を呼び出し、2 番目のパラメーターにGUID_TFCAT_DISPLAYATTRIBUTEPROVIDERし、3 番目のパラメーターに対してテキスト サービスのクラス識別子をもう一度呼び出して、表示属性プロバイダーとして登録する必要があります。 使用可能なカテゴリは、[ 定義済みカテゴリ値] の下に一覧表示されます。
ITfCategoryMgr::UnregisterCategory を呼び出して、以前に登録したカテゴリを削除します。 ITfInputProcessorProfiles::Unregister はテキスト サービスのすべてのカテゴリを削除します。テキスト サービスをアンインストールするときは、個々のカテゴリを削除する必要があります。