IInkRecognizerContext
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
. (IInkRecognizerContext)
メソッド 24
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
InkRecognizerContext オブジェクトに関連付けられた InkStrokes コレクションを取得または設定します。(IInkRecognizerContext.get_Strokes)
| Strokes | IInkStrokes** | out | 認識対象として設定されているストローク コレクションを受け取るポインタである。 |
解説(Remarks)
InkStrokes コレクションは複数回設定できます。InkStrokes コレクションを設定するたびに InkRecognizerContext オブジェクトはリセットされ(インクや結果はすべて削除され、それまでの EndInkInput Method メソッドの呼び出しは無視されます)、その後に新しいストロークが追加されます。
InkStrokes コレクションには NULL を設定することもでき、この場合も InkRecognizerContext オブジェクトはリセットされます。InkRecognizerContext がリセットされても、それ以前に設定されていたガイド、factoid、その他のプロパティは保持されます。
InkRecognizerContext オブジェクトがリセットされると、バックグラウンドスレッドで実行中の認識はキャンセルされます。
InkRecognizerContext オブジェクトの Strokes プロパティを InkDisp オブジェクトと同期させた状態に保つには、InkDisp オブジェクトの InkAdded イベントおよび InkDeleted イベントを使用して、InkRecognizerContext オブジェクトに追加または削除すべきストロークを監視します。これにより、InkDisp オブジェクト内でストロークが追加、削除、クリップ、分割される場合に対応できます。
InkRecognizerContext オブジェクトに関連付けられた InkStrokes コレクションを取得または設定します。
| Strokes | IInkStrokes* | inoptional | 認識対象とするストローク コレクションへのポインタである。 |
解説(Remarks)
InkStrokes コレクションは複数回設定できます。InkStrokes コレクションを設定するたびに InkRecognizerContext オブジェクトはリセットされ(インクや結果はすべて削除され、それまでの EndInkInput Method メソッドの呼び出しは無視されます)、その後に新しいストロークが追加されます。
InkStrokes コレクションには NULL を設定することもでき、この場合も InkRecognizerContext オブジェクトはリセットされます。InkRecognizerContext がリセットされても、それ以前に設定されていたガイド、factoid、その他のプロパティは保持されます。
InkRecognizerContext オブジェクトがリセットされると、バックグラウンドスレッドで実行中の認識はキャンセルされます。
InkRecognizerContext オブジェクトの Strokes プロパティを InkDisp オブジェクトと同期させた状態に保つには、InkDisp オブジェクトの InkAdded イベントおよび InkDeleted イベントを使用して、InkRecognizerContext オブジェクトに追加または削除すべきストロークを監視します。これにより、InkDisp オブジェクト内でストロークが追加、削除、クリップ、分割される場合に対応できます。
文字または単語がいつ認識されるかを決定する、文字のオートコンプリートモードを取得または設定します。(Get)
| Mode | InkRecognizerCharacterAutoCompletionMode* | out | 現在の文字オートコンプリート モードを受け取る InkRecognizerCharacterAutoCompletionMode へのポインタである。 |
解説(Remarks)
認識は Full モード(すべてのストロークが入力済み)、Partial モード(特定の順序での部分入力)、または Random モード(ランダムな順序での部分入力)で行われます。
使用できる文字オートコンプリートモードの値の一覧については、InkRecognizerCharacterAutoCompletionMode 列挙型を参照してください。
文字オートコンプリートは、いったん設定するとオフにできません。
このプロパティを使用する前に、Guide プロパティを設定する必要があります。
認識エンジンによっては文字オートコンプリートをサポートしていません。InkRecognizerCapabilities 列挙体には、認識エンジンがサポートできる機能を示すフラグが含まれます。認識エンジンが文字オートコンプリートをサポートしているかどうかは、Capabilities プロパティの値を確認することで判断できます。
文字または単語がいつ認識されるかを決定する、文字のオートコンプリートモードを取得または設定します。(Put)
| Mode | InkRecognizerCharacterAutoCompletionMode | in | 設定する文字オートコンプリート モードを指定する InkRecognizerCharacterAutoCompletionMode 値である。 |
解説(Remarks)
認識は Full モード(すべてのストロークが入力済み)、Partial モード(特定の順序での部分入力)、または Random モード(ランダムな順序での部分入力)で行われます。
使用できる文字オートコンプリートモードの値の一覧については、InkRecognizerCharacterAutoCompletionMode 列挙型を参照してください。
文字オートコンプリートは、いったん設定するとオフにできません。
このプロパティを使用する前に、Guide プロパティを設定する必要があります。
認識エンジンによっては文字オートコンプリートをサポートしていません。InkRecognizerCapabilities 列挙体には、認識エンジンがサポートできる機能を示すフラグが含まれます。認識エンジンが文字オートコンプリートをサポートしているかどうかは、Capabilities プロパティの値を確認することで判断できます。
認識エンジンが認識結果の検索を制限するために使用する factoid を取得または設定します。(Get)
| Factoid | LPWSTR* | out | 認識精度を高めるために設定されている現在のファクトイド(入力種別ヒント)を文字列で受け取るポインタである。 |
解説(Remarks)
factoid は、特定のフィールドという文脈で認識されるインクに対して、認識エンジンにコンテキストを提供します。入力フィールドの型が既知の場合(たとえば入力フィールドに日付が入る場合など)に factoid を指定します。
factoid とその使用方法の詳細については、Improving Tablet PC Recognition Accuracy by Setting Context を参照してください。
Factoid の設定は、InkStrokes コレクションが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext に関連付ける前に Factoid を設定するか、Strokes コレクションを NULL に設定してから Factoid を設定する(必要に応じて InkStrokes コレクションを再度関連付ける)必要があります。
インクが正しいフィールドのコンテキストで認識されるようにするには、Recognize メソッドを呼び出す前など、インクを初めて処理する前にこのプロパティを設定してください。
InkEdit コントロールの場合、このプロパティを変更するのは、Status プロパティが IES_Idle を返す場合のみにしてください。
認識エンジンが認識結果の検索を制限するために使用する factoid を取得または設定します。(Put)
| factoid | LPWSTR | in | 認識対象の入力種別を示すファクトイド(例: 数値、メール アドレス等)を文字列で指定する。 |
解説(Remarks)
factoid は、特定のフィールドという文脈で認識されるインクに対して、認識エンジンにコンテキストを提供します。入力フィールドの型が既知の場合(たとえば入力フィールドに日付が入る場合など)に factoid を指定します。
factoid とその使用方法の詳細については、Improving Tablet PC Recognition Accuracy by Setting Context を参照してください。
Factoid の設定は、InkStrokes コレクションが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext に関連付ける前に Factoid を設定するか、Strokes コレクションを NULL に設定してから Factoid を設定する(必要に応じて InkStrokes コレクションを再度関連付ける)必要があります。
インクが正しいフィールドのコンテキストで認識されるようにするには、Recognize メソッドを呼び出す前など、インクを初めて処理する前にこのプロパティを設定してください。
InkEdit コントロールの場合、このプロパティを変更するのは、Status プロパティが IES_Idle を返す場合のみにしてください。
インク入力に使用する InkRecognizerGuide を取得または設定します。(IInkRecognizerContext.get_Guide)
| RecognizerGuide | IInkRecognizerGuide** | out | 現在設定されている認識ガイド(枠ガイド)を受け取るポインタである。 |
解説(Remarks)
Guide プロパティの設定は、InkStrokes コレクションが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext に関連付ける前に Guide プロパティを設定するか、InkStrokes コレクションを NULL に設定してから Guide を設定する(必要に応じて InkStrokes コレクションを再度関連付ける)必要があります。
InkRecognizerCapabilities 列挙体には、IRC_FreeInput、IRC_LinedInput、IRC_BoxedInput の各フラグが含まれます。これらのフラグは認識エンジンの機能を示しますが、読み取り専用であるため、IInkRecognizer オブジェクトや InkRecognizerContext オブジェクトに直接設定することはできません。認識エンジンを特定のモードにする唯一の方法は、Guide プロパティでガイドを設定することです。Guide プロパティを設定しない場合、認識エンジンは既定で FreeInput モードになります(認識エンジンがこのモードに対応している場合)。認識エンジンを FreeInput モードにするもう 1 つの方法は、Columns プロパティと Rows プロパティをいずれも 0 に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定することです。
Columns プロパティを 0、Rows プロパティを 1 以上に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定した場合、認識エンジンは IRC_LinedInput モードになります(認識エンジンがこのモードに対応している場合)。認識エンジンは Rows プロパティを使用して行数を制御します。
Rows プロパティを 0、Columns プロパティを 1 以上に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定した場合、認識エンジンは縦書き用の IRC_LinedInput モードになります(認識エンジンがこのモードに対応している場合)。認識エンジンは Columns プロパティを使用して縦書きの行数を制御します。認識エンジンがこれに対応している場合、IInkRecognizer オブジェクトの Capabilities プロパティは IRC_DownAndLeft または IRC_DownAndRight、あるいはその両方を返します。
Columns プロパティを 1 以上、Rows プロパティを 1 以上に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定した場合、認識エンジンは IRC_BoxedInput モードになります(認識エンジンがこのモードに対応している場合)。
この認識エンジンで利用できないモードを設定した場合は、エラーが返されます。
特定の認識エンジンで利用できる機能(モード)を照会する方法については、IInkRecognizer オブジェクトの Capabilities プロパティを参照してください。一般に、ラテン文字の認識エンジンは自由入力と横罫線入力をサポートし、東アジア文字の認識エンジンは自由入力とボックス入力をサポートし、ジェスチャ認識エンジンは自由入力のみをサポートします。
インク入力に使用する InkRecognizerGuide を取得または設定します。
| RecognizerGuide | IInkRecognizerGuide* | inoptional | 設定する認識ガイド(枠ガイド)へのポインタである。 |
解説(Remarks)
Guide プロパティの設定は、InkStrokes コレクションが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext に関連付ける前に Guide プロパティを設定するか、InkStrokes コレクションを NULL に設定してから Guide を設定する(必要に応じて InkStrokes コレクションを再度関連付ける)必要があります。
InkRecognizerCapabilities 列挙体には、IRC_FreeInput、IRC_LinedInput、IRC_BoxedInput の各フラグが含まれます。これらのフラグは認識エンジンの機能を示しますが、読み取り専用であるため、IInkRecognizer オブジェクトや InkRecognizerContext オブジェクトに直接設定することはできません。認識エンジンを特定のモードにする唯一の方法は、Guide プロパティでガイドを設定することです。Guide プロパティを設定しない場合、認識エンジンは既定で FreeInput モードになります(認識エンジンがこのモードに対応している場合)。認識エンジンを FreeInput モードにするもう 1 つの方法は、Columns プロパティと Rows プロパティをいずれも 0 に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定することです。
Columns プロパティを 0、Rows プロパティを 1 以上に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定した場合、認識エンジンは IRC_LinedInput モードになります(認識エンジンがこのモードに対応している場合)。認識エンジンは Rows プロパティを使用して行数を制御します。
Rows プロパティを 0、Columns プロパティを 1 以上に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定した場合、認識エンジンは縦書き用の IRC_LinedInput モードになります(認識エンジンがこのモードに対応している場合)。認識エンジンは Columns プロパティを使用して縦書きの行数を制御します。認識エンジンがこれに対応している場合、IInkRecognizer オブジェクトの Capabilities プロパティは IRC_DownAndLeft または IRC_DownAndRight、あるいはその両方を返します。
Columns プロパティを 1 以上、Rows プロパティを 1 以上に設定した InkRecognizerGuide オブジェクトを Guide プロパティに設定した場合、認識エンジンは IRC_BoxedInput モードになります(認識エンジンがこのモードに対応している場合)。
この認識エンジンで利用できないモードを設定した場合は、エラーが返されます。
特定の認識エンジンで利用できる機能(モード)を照会する方法については、IInkRecognizer オブジェクトの Capabilities プロパティを参照してください。一般に、ラテン文字の認識エンジンは自由入力と横罫線入力をサポートし、東アジア文字の認識エンジンは自由入力とボックス入力をサポートし、ジェスチャ認識エンジンは自由入力のみをサポートします。
InkRecognizerContext オブジェクト内で InkStrokes コレクションの前に位置する文字を取得または設定します。(Get)
| Prefix | LPWSTR* | out | 認識対象の前に付与される接頭テキストを文字列で受け取るポインタである。 |
解説(Remarks)
プレフィックスは、手書き文字に関するより多くのコンテキストを認識エンジンに与えることで、認識結果の向上に役立ちます。
PrefixText プロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext の Strokes プロパティに関連付ける前に PrefixText プロパティを設定するか、Strokes プロパティを NULL に設定してから PrefixText プロパティを設定する必要があります。
IRM_Coerce と IRM_WordMode の InkRecognitionModes フラグを両方とも RecognitionFlags プロパティに設定していない限り、プレフィックステキストは無視されます。
SuffixText プロパティは、InkRecognizerContext オブジェクト内で InkStrokes コレクションの後に位置する文字を取得または設定するもので、同様に認識結果の向上に役立ちます。
インクをテキストに変換する際に修正用のインターフェイスを提供するアプリケーションでは、ユーザーが単語内の文字を選択し、スタイラスで置き換える文字を入力できるようにする場合があります。この場合、アプリケーションは PrefixText プロパティと SuffixText プロパティを使用して、新しいインクの認識精度を高めることができます。
InkRecognizerContext オブジェクト内で InkStrokes コレクションの前に位置する文字を取得または設定します。(Put)
| Prefix | LPWSTR | in | 認識のコンテキストとして与える接頭テキストを文字列で指定する。 |
解説(Remarks)
プレフィックスは、手書き文字に関するより多くのコンテキストを認識エンジンに与えることで、認識結果の向上に役立ちます。
PrefixText プロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext の Strokes プロパティに関連付ける前に PrefixText プロパティを設定するか、Strokes プロパティを NULL に設定してから PrefixText プロパティを設定する必要があります。
IRM_Coerce と IRM_WordMode の InkRecognitionModes フラグを両方とも RecognitionFlags プロパティに設定していない限り、プレフィックステキストは無視されます。
SuffixText プロパティは、InkRecognizerContext オブジェクト内で InkStrokes コレクションの後に位置する文字を取得または設定するもので、同様に認識結果の向上に役立ちます。
インクをテキストに変換する際に修正用のインターフェイスを提供するアプリケーションでは、ユーザーが単語内の文字を選択し、スタイラスで置き換える文字を入力できるようにする場合があります。この場合、アプリケーションは PrefixText プロパティと SuffixText プロパティを使用して、新しいインクの認識精度を高めることができます。
InkRecognizerContext オブジェクト内で InkStrokes コレクションの後に位置する文字を取得または設定します。(Get)
| Suffix | LPWSTR* | out | 認識対象の後に付与される接尾テキストを文字列で受け取るポインタである。 |
解説(Remarks)
サフィックスは、手書き文字に関するより多くのコンテキストを認識エンジンに与えることで、認識結果の向上に役立ちます。
SuffixText プロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext の Strokes プロパティに関連付ける前に SuffixText プロパティを設定するか、Strokes プロパティを NULL に設定してから SuffixText プロパティを設定する必要があります。
Coerce と WordMode の InkRecognitionModes フラグを両方とも RecognitionFlags プロパティに設定していない限り、サフィックステキストは無視されます。
PrefixText プロパティは、InkRecognizerContext オブジェクト内で InkStrokes コレクションの前に位置する文字を取得または設定するもので、同様に認識結果の向上に役立ちます。
インクをテキストに変換する際に修正用のインターフェイスを提供するアプリケーションでは、ユーザーが単語内の文字を選択し、スタイラスで置き換える文字を入力できるようにする場合があります。この場合、アプリケーションは PrefixText プロパティと SuffixText プロパティを使用して、新しいインクの認識精度を高めることができます。
InkRecognizerContext オブジェクト内で InkStrokes コレクションの後に位置する文字を取得または設定します。(Put)
| Suffix | LPWSTR | in | 認識のコンテキストとして与える接尾テキストを文字列で指定する。 |
解説(Remarks)
サフィックスは、手書き文字に関するより多くのコンテキストを認識エンジンに与えることで、認識結果の向上に役立ちます。
SuffixText プロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext の Strokes プロパティに関連付ける前に SuffixText プロパティを設定するか、Strokes プロパティを NULL に設定してから SuffixText プロパティを設定する必要があります。
Coerce と WordMode の InkRecognitionModes フラグを両方とも RecognitionFlags プロパティに設定していない限り、サフィックステキストは無視されます。
PrefixText プロパティは、InkRecognizerContext オブジェクト内で InkStrokes コレクションの前に位置する文字を取得または設定するもので、同様に認識結果の向上に役立ちます。
インクをテキストに変換する際に修正用のインターフェイスを提供するアプリケーションでは、ユーザーが単語内の文字を選択し、スタイラスで置き換える文字を入力できるようにする場合があります。この場合、アプリケーションは PrefixText プロパティと SuffixText プロパティを使用して、新しいインクの認識精度を高めることができます。
認識エンジンがインクをどのように解釈し、結果文字列を決定するかを指定するフラグを取得または設定します。(Get)
| Modes | InkRecognitionModes* | out | 現在設定されている認識モード フラグを受け取る InkRecognitionModes へのポインタである。 |
解説(Remarks)
RecognitionFlags プロパティは、認識エンジンがすべてのインクを 1 つの単語として扱うかどうか、コンテキストに指定した factoid に基づいて結果を強制的に合わせるかどうかなどを指定するフラグを取得または設定します。
RecognitionFlags プロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。
使用できるモードの一覧については、InkRecognitionModes 列挙型を参照してください。
認識エンジンがインクをどのように解釈し、結果文字列を決定するかを指定するフラグを取得または設定します。(Put)
| Modes | InkRecognitionModes | in | 設定する認識モード フラグを指定する InkRecognitionModes 値である。 |
解説(Remarks)
RecognitionFlags プロパティは、認識エンジンがすべてのインクを 1 つの単語として扱うかどうか、コンテキストに指定した factoid に基づいて結果を強制的に合わせるかどうかなどを指定するフラグを取得または設定します。
RecognitionFlags プロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。
使用できるモードの一覧については、InkRecognitionModes 列挙型を参照してください。
認識結果を向上させるために認識処理で使用される単語リストを取得または設定します。(IInkRecognizerContext.get_WordList)
| WordList | IInkWordList** | out | 認識に使用されている単語リストを受け取るポインタである。 |
解説(Remarks)
このプロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext の Strokes プロパティに関連付ける前に WordList プロパティを設定するか、Strokes プロパティを NULL に設定してから WordList プロパティを設定する(必要に応じて InkStrokes コレクションを再度関連付ける)必要があります。
現在の単語リストを削除してユーザー辞書を使用するには、このプロパティに NULL を設定します。その後に InkWordList オブジェクトを変更しても、認識結果は変わりません。単語リストを変更したい場合は、まずこのプロパティに NULL を設定し、InkWordList を変更してから、WordList プロパティに代入して InkRecognizerContext に再度関連付けてください。
コンテキストに関連付けられた単語リストに検索を限定するには、Factoid プロパティを使用します。結果を向上させるために RecognitionFlags プロパティの設定が必要になる場合もあります。
factoid を設定した後に単語リストを設定することはできません。これは、factoid が存在しない可能性のある単語リストを参照しないようにするためです。設定しようとすると、HRESULT 値 E_FAIL が返されます。
単語リストに文字列を追加すると、その大文字化されたバリエーションも暗黙的に追加されます。たとえば "hello" を追加すると、"Hello" と "HELLO" も暗黙的に追加されます。
256 文字を超える単語を使用すると、WordList プロパティを InkRecognizerContext に代入する際に E_POINTER 例外が発生します。
認識結果を向上させるために認識処理で使用される単語リストを取得または設定します。
| WordList | IInkWordList* | inoptional | 認識に使用する単語リストへのポインタである。 |
解説(Remarks)
このプロパティの設定は、Strokes プロパティが NULL の場合にのみ成功します。InkStrokes コレクションを InkRecognizerContext の Strokes プロパティに関連付ける前に WordList プロパティを設定するか、Strokes プロパティを NULL に設定してから WordList プロパティを設定する(必要に応じて InkStrokes コレクションを再度関連付ける)必要があります。
現在の単語リストを削除してユーザー辞書を使用するには、このプロパティに NULL を設定します。その後に InkWordList オブジェクトを変更しても、認識結果は変わりません。単語リストを変更したい場合は、まずこのプロパティに NULL を設定し、InkWordList を変更してから、WordList プロパティに代入して InkRecognizerContext に再度関連付けてください。
コンテキストに関連付けられた単語リストに検索を限定するには、Factoid プロパティを使用します。結果を向上させるために RecognitionFlags プロパティの設定が必要になる場合もあります。
factoid を設定した後に単語リストを設定することはできません。これは、factoid が存在しない可能性のある単語リストを参照しないようにするためです。設定しようとすると、HRESULT 値 E_FAIL が返されます。
単語リストに文字列を追加すると、その大文字化されたバリエーションも暗黙的に追加されます。たとえば "hello" を追加すると、"Hello" と "HELLO" も暗黙的に追加されます。
256 文字を超える単語を使用すると、WordList プロパティを InkRecognizerContext に代入する際に E_POINTER 例外が発生します。
InkRecognizerContext オブジェクトが使用する IInkRecognizer オブジェクトを取得します。
| Recognizer | IInkRecognizer** | out | このコンテキストに関連付けられた認識エンジンを受け取るポインタである。 |
InkStrokes コレクションに対して認識を実行し、認識結果を返します。(IInkRecognizerContext.Recognize)
| RecognitionStatus | InkRecognitionStatus* | inout | 最新の InkRecognitionStatus 値。 |
| RecognitionResult | IInkRecognitionResult** | out | このメソッドが返るときに、認識されたストロークのコレクションの結果である IInkRecognitionResult へのポインターが格納されます。認識エンジンがインクの結果を算出できなかった場合は NULL が格納されます。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 予期しないパラメーターまたはプロパティの型です。 | |
|
メソッド内で例外が発生しました。 |
| 操作に必要なメモリを割り当てられません。 |
解説(Remarks)
このメソッドは同期的に認識を実行します。バックグラウンド認識または非同期認識を開始するには、BackgroundRecognize メソッドまたは BackgroundRecognizeWithAlternates メソッドを呼び出してください。
InkDisp オブジェクトにストロークが 1 つも含まれていない場合、または削除済みのストロークしか含まれていない場合は例外がスローされるため、Recognize を呼び出す際は try/catch ブロックを使用する必要があります。
BackgroundRecognize または BackgroundRecognizeWithAlternates の呼び出しによって開始されたバックグラウンド認識を終了します。
戻り値
このメソッドは、次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
|
成功しました。
認識エンジンがこのメソッドをサポートしていない場合も S_OK を返します。 |
|
| 操作を完了するためのメモリを割り当てられません。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
StopBackgroundRecognition を呼び出しても、イベントは発生しません。
BackgroundRecognize または BackgroundRecognizeWithAlternates を 1 回以上呼び出した場合は、StopBackgroundRecognition を呼び出してください。StopBackgroundRecognition を呼び出しても、現在進行中の認識処理から結果がまったく返らないことが保証されるわけではありません。保証されるのは、まだ処理されていない BackgroundRecognize または BackgroundRecognizeWithAlternates の呼び出しが実際には実行されないことだけです。
このメソッドは、インクを非同期に処理する場合にのみ呼び出してください。
EndInkInput は、Windows Vista 以降、欧文言語の認識エンジンでは使用できなくなりました。
戻り値
このメソッドは、次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 操作を完了するためのメモリを割り当てられません。 | |
| 不明なエラーが発生しました。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドを呼び出した後は、コンテキストにストロークを追加できません。
このメソッドは部分認識に関係します。部分認識とは、アプリケーションが EndInkInput(すべてのインクが入力されたことを通知します)を呼び出していなくても、認識エンジンが結果を返せる機能のことです。部分認識は、EndInkInput の呼び出し前にインクが入力されたことを認識エンジンが判断できる場合にのみ行われ、すべての認識エンジンがこの機能をサポートしているわけではありません。部分認識をサポートしていない認識エンジンは、EndInkInput が呼び出されるまで結果を返しません。EndInkInput の呼び出しは省略可能です。
増分認識とは、認識エンジンに渡されたインクの一部だけを処理して結果を返す機能のことです。たとえば、アプリケーションが 5 行分のインクを保持し、ラテン文字の認識エンジンを使用しているとします。認識エンジンは一度に 1 行だけを処理して結果を返すことができます。この処理は、バックグラウンド処理スレッドのアイドルループで使用されます。
IInkRecognizer オブジェクトに、関連付けられたストロークコレクションの認識を実行させ、認識が完了したときに Recognition イベントを発生させます。
| CustomData | VARIANT | in | Recognition イベントでアプリケーションが利用できる、アプリケーション定義の任意のデータを指定します。渡すデータがない場合、このパラメーターは VT_EMPTY 型または VT_NULL 型の VARIANT でもかまいません。既定値は NULL です。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 操作を完了するためのメモリを割り当てられません。 | |
|
ストロークが存在しません。 |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドは、インクの認識を非同期に実行することを指定します。インクを同期的に認識するには、Recognize メソッドを呼び出してください。
このメソッドは最良の結果文字列のみを認識します。代替候補は作成されません。利用可能な代替候補の一覧を作成する認識を行うには、BackgroundRecognizeWithAlternates メソッドを呼び出してください。
認識エンジンが何も認識しなかった場合、Recognition イベントは発生しません。
IInkRecognizer オブジェクトに、関連付けられたストロークコレクションの認識を実行させ、認識が完了したときに RecognitionWithAlternates イベントを発生させます。
| CustomData | VARIANT | in | 省略可能です。RecognitionWithAlternates イベントでアプリケーションが利用できる、アプリケーション定義の任意のデータを指定します。渡すデータがない場合、このパラメーターは VT_EMPTY 型または VT_NULL 型の VARIANT でもかまいません。既定値は NULL です。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| HRESULT 値 | 説明 |
|---|---|
| 成功しました。 | |
| 操作を完了するためのメモリを割り当てられません。 | |
|
ストロークが存在しません。 |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドは、インクの認識を非同期に実行することを指定します。
代替候補を含まず、最良の結果文字列のみを対象とする認識を行うには、BackgroundRecognize メソッドを呼び出してください。
認識エンジンが代替候補を 1 つも認識しなかった場合、RecognitionWithAlternates イベントは発生しません。
InkRecognizerContext オブジェクトの複製を作成します。
| RecoContext | IInkRecognizerContext** | out | このメソッドが返るときに、新しく作成された InkRecognizerContext オブジェクトが格納されます。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 操作を完了するためのメモリを割り当てられません。 | |
| 不明なエラーが発生しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内で例外が発生しました。 |
|
InkDisp オブジェクトが登録されていません。 |
| 予期しないパラメーターまたはプロパティの型です。 |
解説(Remarks)
Clone メソッドは、InkDisp、InkDrawingAttributes、InkRecognizerContext の各オブジェクトに定義されています。Clone メソッドは、元のオブジェクトの完全なコピーを返します。
ほとんどの場合、複製されたオブジェクトは元のオブジェクトの完全なコピーですが、2 つのオブジェクトの間に関連はありません。これに対する例外の詳細については、このトピックの解説セクションを参照してください。
InkRecognizerContext オブジェクト: このメソッドは、元の InkRecognizerContext と同じ設定を持つコピーを返しますが、認識結果がある場合でもそれは含まれません。コピーされる設定には、認識ガイド、文字オートコンプリートモード、元の InkDisp への参照、および Factoid プロパティや RecognitionFlags プロパティなど、認識結果を向上させるすべてのプロパティが含まれます。
指定した文字列がシステム辞書、ユーザー辞書、または単語リストに含まれるかどうかを示します。
| String | LPWSTR | in | 辞書および単語リスト内で検索する文字列。 BSTR データ型の詳細については、Using the COM Library を参照してください。 |
| Supported | VARIANT_BOOL* | out | このメソッドが返るときに、文字列が辞書または単語リストに含まれる場合は VARIANT_TRUE が、それ以外の場合は VARIANT_FALSE が格納されます。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| いずれかの辞書に文字列が含まれています。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 入力文字列が無効です。 | |
|
処理中に例外が発生しました。 |
| 操作に必要なメモリを割り当てられません。 | |
| 予期しないパラメーターまたはプロパティの型です。 |
解説(Remarks)
このメソッドは、テスト対象の文字列にコンテキストを与えるすべてのフラグや factoid などを考慮します。
コンテキストに 単語リスト を指定した場合、このメソッドはユーザー辞書を検索しません。認識エンジンは Microsoft Office XP の音声辞書を使用します。
システム辞書またはコンテキストに関連付けられた単語リストに検索を限定するには、Factoid プロパティを使用します。たとえば、システム辞書に検索を限定するには、SystemDictionary factoid を指定します。結果を向上させるために RecognitionFlags プロパティの設定が必要になる場合もあります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IInkRecognizerContext "{C68F52F9-32A3-4625-906C-44FC23B40958}" #usecom global IInkRecognizerContext IID_IInkRecognizerContext "{AAC46A37-9229-4FC0-8CCE-4497569BF4D1}" #comfunc global IInkRecognizerContext_get_Strokes 7 sptr #comfunc global IInkRecognizerContext_putref_Strokes 8 sptr #comfunc global IInkRecognizerContext_get_CharacterAutoCompletionMode 9 var #comfunc global IInkRecognizerContext_put_CharacterAutoCompletionMode 10 int #comfunc global IInkRecognizerContext_get_Factoid 11 var #comfunc global IInkRecognizerContext_put_Factoid 12 wstr #comfunc global IInkRecognizerContext_get_Guide 13 sptr #comfunc global IInkRecognizerContext_putref_Guide 14 sptr #comfunc global IInkRecognizerContext_get_PrefixText 15 var #comfunc global IInkRecognizerContext_put_PrefixText 16 wstr #comfunc global IInkRecognizerContext_get_SuffixText 17 var #comfunc global IInkRecognizerContext_put_SuffixText 18 wstr #comfunc global IInkRecognizerContext_get_RecognitionFlags 19 var #comfunc global IInkRecognizerContext_put_RecognitionFlags 20 int #comfunc global IInkRecognizerContext_get_WordList 21 sptr #comfunc global IInkRecognizerContext_putref_WordList 22 sptr #comfunc global IInkRecognizerContext_get_Recognizer 23 sptr #comfunc global IInkRecognizerContext_Recognize 24 var,sptr #comfunc global IInkRecognizerContext_StopBackgroundRecognition 25 #comfunc global IInkRecognizerContext_EndInkInput 26 #comfunc global IInkRecognizerContext_BackgroundRecognize 27 int #comfunc global IInkRecognizerContext_BackgroundRecognizeWithAlternates 28 int #comfunc global IInkRecognizerContext_Clone 29 sptr #comfunc global IInkRecognizerContext_IsStringSupported 30 wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkRecognizerContext "{C68F52F9-32A3-4625-906C-44FC23B40958}" #usecom global IInkRecognizerContext IID_IInkRecognizerContext "{AAC46A37-9229-4FC0-8CCE-4497569BF4D1}" #comfunc global IInkRecognizerContext_get_Strokes 7 sptr #comfunc global IInkRecognizerContext_putref_Strokes 8 sptr #comfunc global IInkRecognizerContext_get_CharacterAutoCompletionMode 9 sptr #comfunc global IInkRecognizerContext_put_CharacterAutoCompletionMode 10 int #comfunc global IInkRecognizerContext_get_Factoid 11 sptr #comfunc global IInkRecognizerContext_put_Factoid 12 wstr #comfunc global IInkRecognizerContext_get_Guide 13 sptr #comfunc global IInkRecognizerContext_putref_Guide 14 sptr #comfunc global IInkRecognizerContext_get_PrefixText 15 sptr #comfunc global IInkRecognizerContext_put_PrefixText 16 wstr #comfunc global IInkRecognizerContext_get_SuffixText 17 sptr #comfunc global IInkRecognizerContext_put_SuffixText 18 wstr #comfunc global IInkRecognizerContext_get_RecognitionFlags 19 sptr #comfunc global IInkRecognizerContext_put_RecognitionFlags 20 int #comfunc global IInkRecognizerContext_get_WordList 21 sptr #comfunc global IInkRecognizerContext_putref_WordList 22 sptr #comfunc global IInkRecognizerContext_get_Recognizer 23 sptr #comfunc global IInkRecognizerContext_Recognize 24 sptr,sptr #comfunc global IInkRecognizerContext_StopBackgroundRecognition 25 #comfunc global IInkRecognizerContext_EndInkInput 26 #comfunc global IInkRecognizerContext_BackgroundRecognize 27 int #comfunc global IInkRecognizerContext_BackgroundRecognizeWithAlternates 28 int #comfunc global IInkRecognizerContext_Clone 29 sptr #comfunc global IInkRecognizerContext_IsStringSupported 30 wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。