ITextSelection
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
テキストセレクションは、選択のハイライト表示を伴うテキスト範囲(text range)です。
解説(Remarks)
セレクションは何らかのビューに関連付けられており、キーボード入力をエミュレートするための UI 指向のメソッドをいくつか備えています。そのため、アプリケーションはテキストセレクションに対して ITextSelection メソッドだけでなく、ITextRange メソッドも使用できます。
キーボード入力のエミュレーションでは、セレクションで使用される範囲は アクティブ端(active end) という概念を用います。これは通常、最後に移動された端を指します。たとえば、実際にはテキストセレクションである範囲に対して ITextRange::Move* メソッドを実行した場合、最も最近移動された端がアクティブ端になります。アクティブ端の最も身近な例は Shift+方向キーの処理に関するもので、この場合はアクティブ端が移動する側になります。これに応じて、ITextSelection メソッドには、MoveLeft や MoveRight のようなアクティブ端を移動するメソッドや、アクティブ端の状態を取得・設定するメソッドが含まれます。これらのメソッドは、標準的なカーソルキーパッドの操作と同様の方法でセレクションを操作します。これにより、たとえばマクロレコーダー機能などを実装できます。
カーソルキーパッドのメソッドがどのように動作するかについては、次の表を参照してください。各メソッドは、Ctrl キーおよび Shift キーと組み合わせたカーソルキーパッドのキーに対応します。Unit パラメーターは Ctrl キーを押すか押さないかで選択され、Extend パラメーターは Shift キーを押すか押さないかで選択されます。なお、MoveUp と MoveDown は複数のキーパッドキーに対応します。詳細については、各メソッドの説明を参照してください。
| メソッド | カーソルキーパッドのキー | CTRL を押した場合(押さない場合)の Unit | SHIFT を押した場合(押さない場合)の Extend |
|---|---|---|---|
| EndKey | End | tomStory (tomLine) | tomExtend (tomMove) |
| HomeKey | Home | tomStory (tomLine) | tomExtend (tomMove) |
| MoveLeft | Left Arrow | tomWord (tomCharacter) | tomExtend (tomMove) |
| MoveRight | Right Arrow | tomWord (tomCharacter) | tomExtend (tomMove) |
| MoveUp | Up Arrow | tomParagraph (tomLine) | tomExtend (tomMove) |
| MoveDown | Down Arrow | tomParagraph (tomLine) | tomExtend (tomMove) |
| MoveUp | Page Up | tomWindow (tomScreen) | tomExtend (tomMove) |
| MoveDown | Page Down | tomWindow (tomScreen) | tomExtend (tomMove) |
通常、アプリケーションが ITextSelection インターフェイスを実装することはありません。代わりに、リッチエディットコントロールなどの Microsoft のテキストソリューションが、Text Object Model (TOM) 実装の一部として ITextSelection を実装します。
アプリケーションは、GetSelection メソッドを呼び出すことで ITextSelection ポインターを取得できます。
メソッド 10
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
テキストセレクションのフラグを取得します。
| pFlags | INT* | out | 次のセレクションフラグの任意の組み合わせ。
表の各値はバイナリ(2 値)です。したがって、ある値が設定されていない場合、テキストセレクションはその反対の性質を持ちます。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。pFlags が null の場合、このメソッドは失敗し、E_INVALIDARG を返します。
テキストセレクションのフラグを設定します。
| Flags | INT | in | 新しいフラグ値。次の任意の組み合わせを指定できます。
表の各値はバイナリ(2 値)です。したがって、ある値が設定されていない場合、テキストセレクションはその反対の性質を持ちます。 |
戻り値
型: HRESULT
このメソッドは S_OK を返します。
解説(Remarks)
Start 端をアクティブにし、曖昧な文字位置を行の末尾に表示するようにするには、次のコードを実行します。
selection.Flags = tomSelStartActive + tomSelAtEOL
Flags プロパティが有用なのは、ITextRange オブジェクトが自分自身を選択できるためです。SetFlags を使用すると、アクティブ端を既定値の End から変更したり、曖昧な文字位置に対するキャレット位置を選択したり、挿入/上書きモードを変更したりできます。
テキストセレクションの種類を取得します。
| pType | INT* | out | セレクションの種類。このメソッドは、pType に次の表のいずれかの値を返します。
|
戻り値
型: StdMETHODIMP
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。pType が null の場合、このメソッドは失敗し、E_INVALIDARG を返します。
Left Arrow(左方向)キーの機能を一般化したものです。
| Unit | INT | in | 使用する単位(Unit)。次のいずれかを指定できます。
注: Count が 0 未満の場合、移動は右方向になります。 | |||||||||
| Count | INT | in | 移動する Unit の数。既定値は 1 です。Count が 0 未満の場合、移動は右方向になります。 | |||||||||
| Extend | INT | in | セレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションをアクティブ端の挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。 | |||||||||
| pDelta | INT* | out | 挿入ポイントまたはアクティブ端が実際に左へ移動した単位数。このパラメーターは null にできます。Extend が 0 のときにセレクションを退化させる操作は、1 単位としてカウントされます。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。
| 戻り値コード | 説明 |
|---|---|
| Unit が無効です。 | |
| その他の理由による失敗です。 |
解説(Remarks)
CharRight、CharLeft、WordRight、WordLeft などの WordBasic の移動メソッドは、標準的な方向キーによる編集動作と密接に関連する次の 4 つの処理を行えるハイブリッドです。
- セレクションがない場合は、現在の挿入ポイントを移動します。
- セレクションがある場合は、セレクションのアクティブ端を移動します。
- 挿入ポイントをセレクションに変換したり、その逆を行ったりします。
- 移動が発生したかどうかを示すブール値を返します。
| ITextSelection | WordBasic | 機能 |
|---|---|---|
| selection.MoveRight tomWord, 1, 1 | WordRight 1,1 | アクティブ端を 1 単語分右へ移動します。 |
| selection.MoveLeft tomCharacter, 1, 1 | CharLeft 1,1 | アクティブ端を 1 文字分左へ移動します。 |
WordBasic と同様に、Count が 0 未満の場合は左と右の意味が入れ替わります。つまり MoveLeft (Unit, Count, Extend) は MoveRight (Unit, -Count, Extend) と同等です。
WordBasic および Left Arrow キーの UI 動作と同様に、退化したセレクションに対して MoveLeft (Unit, Count) を呼び出すと、挿入ポイントが指定された数の Unit 分だけ移動します。退化した範囲に対して、Count が 0 より大きい状態で MoveLeft(Unit, Count, 1) を呼び出すと、範囲は非退化になり、左端がアクティブ端になります。
Extend が tomExtend(または 0 以外)の場合、MoveLeft はセレクションのアクティブ端のみを移動し、もう一方の端はそのままにします。一方、Extend が 0 で、セレクションが最初は非退化な範囲である場合、Count が 0 より大きい状態の MoveLeft(Unit, Count) は、アクティブ端を左へ Count - 1 単位移動し、その後もう一方の端をアクティブ端に移動します。言い換えると、アクティブ端に挿入ポイントを作ります。範囲を退化させる操作は 1 単位としてカウントされます。したがって、MoveLeft(tomCharacter) は非退化なセレクションを、そのセレクションの左端で退化したものに変換します。ここでは、Count は既定値の 1、Extend は既定値の 0 になります。この例は Left Arrow キーを押すことに相当します。MoveLeft と MoveRight は ITextRange の移動メソッドと関連していますが、アクティブ端(Shift キーを押すことで移動する端)を明示的に使う点が異なります。
Right Arrow(右方向)キーの機能を一般化したものです。
| Unit | INT | in | 使用する単位(Unit)。次のいずれかを指定できます。
注: Count が 0 未満の場合、移動は左方向になります。 | |||||||||
| Count | INT | in | 移動する Unit の数。既定値は 1 です。Count が 0 未満の場合、移動は左方向になります。 | |||||||||
| Extend | INT | in | セレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションをアクティブ端の挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。 | |||||||||
| pDelta | INT* | out | 挿入ポイントまたはアクティブ端が実際に左へ移動した単位数。このパラメーターは null にできます。Extend が 0 のときにセレクションを退化させる操作は、1 単位としてカウントされます。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。
| 戻り値コード | 説明 |
|---|---|
| Unit が無効です。 | |
| その他の理由による失敗です。 |
解説(Remarks)
CharRight、CharLeft、WordRight、WordLeft などの Microsoft WordBasic の移動メソッドは、標準的な方向キーによる編集動作と密接に関連する次の 4 つの処理を行えるハイブリッドです。
- セレクションがない場合は、現在の挿入ポイントを移動します。
- セレクションがある場合は、セレクションのアクティブ端を移動します。
- 挿入ポイントをセレクションに変換したり、その逆を行ったりします。
- 移動が発生したかどうかを示すブール値を返します。
| ITextSelection | WordBasic | 機能 |
|---|---|---|
| s.MoveRight tomWord, 1, 1 | WordRight 1,1 | アクティブ端を 1 単語分右へ移動します。 |
| s.MoveLeft tomCharacter, 1, 1 | CharLeft 1,1 | アクティブ端を 1 文字分左へ移動します。 |
WordBasic と同様に、Count が 0 未満の場合は左と右の意味が入れ替わります。つまり MoveLeft (Unit, Count, Extend) は MoveRight(Unit, -Count, Extend) と同等です。
WordBasic および Right Arrow キーの UI 動作と同様に、退化したセレクションに対して MoveRight(Unit, Count) を呼び出すと、挿入ポイントが指定された数の単位分だけ移動します。退化した範囲に対して、Count が 0 より大きい状態で MoveRight(Unit, Count, 1) を呼び出すと、範囲は非退化になり、右端がアクティブ端になります。
Extend が tomExtend(または 0 以外)の場合、MoveRight はセレクションのアクティブ端のみを移動し、もう一方の端はそのままにします。一方、Extend が 0 で、セレクションが最初は非退化な範囲である場合、Count が 0 より大きい状態の MoveRight(Unit, Count) は、アクティブ端を右へ Count - 1 単位移動し、その後もう一方の端をアクティブ端に移動します。言い換えると、アクティブ端に挿入ポイントを作ります。範囲を退化させる操作は 1 単位としてカウントされます。したがって、MoveRight(tomCharacter) は非退化なセレクションを、そのセレクションの右端で退化したものに変換します。ここでは、Count は既定値の 1、Extend は既定値の 0 になります。この例は Right Arrow キーを押すことに相当します。MoveLeft と MoveRight は ITextRange の移動メソッドと関連していますが、アクティブ端(Shift キーを押すことで移動する端)を明示的に使う点が異なります。
Up Arrow(上方向)キーおよび Page Up キーの機能を模倣します。
| Unit | INT | in | 操作で使用する単位(Unit)。次のいずれかを指定できます。
| |||||||||||||||
| Count | INT | in | 移動する Units の数。既定値は 1 です。 | |||||||||||||||
| Extend | INT | in | セレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。 | |||||||||||||||
| pDelta | INT* | out | 挿入ポイントまたはアクティブ端が実際に下へ移動した単位数。このパラメーターは null にできます。セレクションを退化させる操作は 1 単位としてカウントされます。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。
| 戻り値コード | 説明 |
|---|---|
| Unit が無効です。 | |
| その他の理由による失敗です。 |
解説(Remarks)
MoveUp メソッドと MoveDown メソッドは MoveLeft メソッドおよび MoveRight メソッドと似ていますが、カーソルキーパッドの Up Arrow、Down Arrow、Page Up、Page Down キーの動作を反映する点が異なります。
Down Arrow(下方向)キーおよび Page Down キーの機能を模倣します。
| Unit | INT | in | 操作で使用する単位(Unit)。次のいずれかを指定できます。
| |||||||||||||||
| Count | INT | in | 移動する Unit の数。既定値は 1 です。 | |||||||||||||||
| Extend | INT | in | セレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。 | |||||||||||||||
| pDelta | INT* | out | 挿入ポイントまたはアクティブ端が実際に下へ移動した単位数を受け取る変数へのポインター。セレクションを退化させる操作は 1 単位としてカウントされます。このパラメーターは null にできます。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。
| 戻り値コード | 説明 |
|---|---|
| Unit が無効です。 | |
| その他の理由による失敗です。 |
解説(Remarks)
ITextSelection::MoveUp メソッドと ITextSelection::MoveDown メソッドは ITextSelection::MoveLeft メソッドおよび ITextSelection::MoveRight メソッドと似ていますが、カーソルキーパッドの Up Arrow、Down Arrow、Page Up、Page Down キーの動作を反映する点が異なります。
Home キーの機能を一般化したものです。
| Unit | tomConstants | in | Home キー操作で使用する単位(Unit)。次のいずれかの値を指定できます。 |
| Extend | INT | in | セレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させます。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。 |
| pDelta | INT* | out | 挿入ポイントまたはアクティブ端が移動した文字数を受け取る変数へのポインター。このパラメーターは null にできます。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。
| 戻り値コード | 説明 |
|---|---|
| Unit が tomLine でも tomStory でもありません。 | |
| その他の理由による失敗です。 |
解説(Remarks)
ITextSelection::HomeKey メソッドと ITextSelection::EndKey メソッドは、標準的な Home/End キーの動作を模倣するために使用されます。
tomLine は Ctrl キーを 押さない 状態での Home または End キーの動作を模倣し、tomStory は Ctrl キーを 押した 状態での動作を模倣します。同様に、tomMove は Shift キーを 押さない 状態での Home または End キーの動作を模倣し、tomExtend は Shift キーを 押した 状態での動作を模倣します。したがって、HomeKey(tomStory) はセレクションを、関連付けられたストーリーの先頭にある挿入ポイントに変換します。一方、HomeKey(tomStory, tomExtend) はセレクションのアクティブ端をストーリーの先頭へ移動し、もう一方の端は元の位置に残します。
HomeKey メソッドと EndKey メソッドは、方向に依存するメソッドではなく、Move メソッドと同様の論理的なメソッドです。そのため、対象となる言語に依存します。たとえば、アラビア語のテキストでは HomeKey は行の右端へ移動しますが、英語のテキストでは左端へ移動します。したがって、HomeKey メソッドと EndKey メソッドは ITextSelection::MoveLeft メソッドおよび ITextSelection::MoveRight メソッドとは異なります。また、HomeKey メソッドは、セレクションの先頭の cp を表す Start プロパティとはまったく異なる点にも注意してください。HomeKey と EndKey は、アクティブ端から拡張する点で StartOf メソッドおよび EndOf メソッドとも異なります。StartOf は Start から拡張し、EndOf は End から拡張します。
End キーの機能を模倣します。
| Unit | INT | in | 使用する単位(Unit)。次のいずれかを指定できます。 |
| Extend | INT | in | セレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させます。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。 |
| pDelta | INT* | out | 挿入ポイントまたはアクティブ端が移動した文字数を受け取る変数へのポインター。このパラメーターは null にできます。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。
| 戻り値コード | 説明 |
|---|---|
| Unit が tomLine でも tomStory でもありません。 | |
| その他の理由による失敗です。 |
解説(Remarks)
Extend を tomExtend(または 0 以外)に設定することは、Shift キーが押されている状態に相当します。Unit を tomLine に設定することは、Ctrl キーが押されていない状態に相当します。Unit を tomStory に設定することは、Ctrl キーが押されている状態に相当します。pDelta パラメーターは、挿入ポイントまたはアクティブ端が移動した文字数を受け取ります。
ITextSelection::HomeKey メソッドと ITextSelection::EndKey メソッドは、標準的な Home/End キーの動作を模倣するために使用されます。
tomLine 値は Ctrl キーを 押さない 状態での Home または End キーの動作を模倣し、tomStory は Ctrl キーを 押した 状態での動作を模倣します。同様に、tomMove は Shift キーを 押さない 状態での Home または End キーの動作を模倣し、tomExtend は Shift キーを 押した 状態での動作を模倣します。したがって、EndKey(tomStory) はセレクションを、関連付けられたストーリーの末尾にある挿入ポイントに変換します。一方、EndKey(tomStory, tomExtend) はセレクションのアクティブ端をストーリーの末尾へ移動し、もう一方の端は元の位置に残します。
HomeKey メソッドと EndKey メソッドは、方向に依存するメソッドではなく、Move* メソッドと同様の論理的なメソッドです。そのため、対象となる言語に依存します。たとえば、アラビア語のテキストでは HomeKey は行の右端へ移動しますが、英語のテキストでは左端へ移動します。したがって、HomeKey と EndKey は MoveLeft メソッドおよび MoveRight メソッドとは異なります。また、EndKey メソッドは、セレクションの末尾の cp を表す End プロパティとはまったく異なる点にも注意してください。HomeKey と EndKey は、アクティブ端から拡張する点で StartOf メソッドおよび EndOf メソッドとも異なります。StartOf は Start から拡張し、EndOf は End から拡張します。
bstr で指定された文字列を、あたかも誰かが入力したかのように、このセレクションの位置に入力します。これは基盤となる SetText メソッドと似ていますが、挿入/上書きキーの状態や、オートコレクト、スマートクォートといった UI 設定の影響を受ける点が異なります。
| bstr | LPWSTR | in | このセレクションに入力する文字列。 |
戻り値
型: HRESULT
このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。
| 戻り値コード | 説明 |
|---|---|
| テキストが書き込み保護されています。 | |
| bstr が null です。 | |
| メモリ不足です。 |
解説(Remarks)
このメソッドは、bstr で指定された文字列を、あたかも誰かが入力したかのように、このセレクションの位置に入力します。TypeText を使用する方法は、SendMessage 関数を通じて文字を送信するよりも高速ですが、SetText を使用するよりは低速です。
TypeText は基盤となる SetText メソッドと似ていますが、挿入/上書きキーの状態や、オートコレクト、スマートクォートといった UI 設定の影響を受けます。たとえば、非退化なセレクションがあればそれを削除し、その後、挿入ポイントの位置に文字列 bstr を挿入または上書き(挿入/上書きキーの状態に応じて。SetFlags メソッドを参照)します。処理後、このセレクションは挿入されたテキストの直後の挿入ポイントになります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITextSelection "{8CC497C1-A1DF-11CE-8098-00AA0047BE5D}" #usecom global ITextSelection IID_ITextSelection "{}" #comfunc global ITextSelection_GetFlags 58 var #comfunc global ITextSelection_SetFlags 59 int #comfunc global ITextSelection_GetType 60 var #comfunc global ITextSelection_MoveLeft 61 int,int,int,var #comfunc global ITextSelection_MoveRight 62 int,int,int,var #comfunc global ITextSelection_MoveUp 63 int,int,int,var #comfunc global ITextSelection_MoveDown 64 int,int,int,var #comfunc global ITextSelection_HomeKey 65 int,int,var #comfunc global ITextSelection_EndKey 66 int,int,var #comfunc global ITextSelection_TypeText 67 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ITextSelection "{8CC497C1-A1DF-11CE-8098-00AA0047BE5D}" #usecom global ITextSelection IID_ITextSelection "{}" #comfunc global ITextSelection_GetFlags 58 sptr #comfunc global ITextSelection_SetFlags 59 int #comfunc global ITextSelection_GetType 60 sptr #comfunc global ITextSelection_MoveLeft 61 int,int,int,sptr #comfunc global ITextSelection_MoveRight 62 int,int,int,sptr #comfunc global ITextSelection_MoveUp 63 int,int,int,sptr #comfunc global ITextSelection_MoveDown 64 int,int,int,sptr #comfunc global ITextSelection_HomeKey 65 int,int,sptr #comfunc global ITextSelection_EndKey 66 int,int,sptr #comfunc global ITextSelection_TypeText 67 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。