IConsole2
COM公式ドキュメント
IConsole2 インターフェイスは MMC 1.1 で導入されました。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IConsole2::Expand メソッドを使用すると、スナップインはスコープ ペイン内の項目を展開または折りたたむことができます。
| hItem | INT_PTR | in | 展開する項目へのハンドル。 |
| bExpand | BOOL | in | 項目を展開するか折りたたむかを指定する値。TRUE は項目を展開します。FALSE は項目を折りたたみます。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
解説(Remarks)
IConsole2::Expand メソッドは、ユーザーがプラス記号またはマイナス記号をクリックしてスコープ ペイン内の項目を展開または折りたたむ操作を、プログラムで実行するのと同等です。つまり、このメソッドはスコープ ペイン内の項目を視覚的に展開または折りたたみます。このメソッドはスコープ ペインの選択を変更せず、結果ペインにも影響を与えないことに注意してください。
このメソッドが呼び出されると、MMC は bExpand に設定された値に基づいて hItem で指定された項目を展開または折りたたみます。次に MMC は、各子項目のスナップインに展開通知を送信します。MMC は、各子スナップインの IComponentData::Notify メソッドを、event を MMCN_EXPAND に、lpDataObject を hItem のデータ オブジェクトへのポインターに、arg を bExpand に基づいて TRUE または FALSE に、param を hItem に設定して呼び出すことでこれを行います。hItem は、IConsole2::Expand の呼び出しで指定した HSCOPEITEM ハンドルであることに注意してください。
IConsole2::Expand メソッドは特定のビューにのみ適用されます。つまり、コンソール内の特定のマルチ ドキュメント インターフェイス (MDI) ウィンドウに表示されるスナップイン項目に対応する、スナップインの IComponent オブジェクトのインスタンスにのみ適用されます。コンソール内の各 MDI ウィンドウはそれぞれ異なるビューを表し、MDI ウィンドウ内のスナップインのインスタンスは、そのスナップインの IComponent オブジェクトに対応することに注意してください。
したがって、スナップインは、 IComponent オブジェクトに関連付けられた IConsole2 インターフェイス ポインター、すなわち IComponent::Initialize によって返された IConsole インターフェイス ポインターに対して QueryInterface を呼び出して取得した IConsole2 インターフェイス ポインターに対してのみ、このメソッドを呼び出す必要があります。
項目を視覚的に展開せずに名前空間内の項目の子項目を列挙するには、スナップインは IConsoleNameSpace2::Expand メソッドを使用する必要があります。
IConsole2::IsTaskpadViewPreferred メソッドは廃止されました。常に S_OK を返します。
戻り値
このメソッドは次の値のいずれかを返すことがあります。
IConsole2::SetStatusText メソッドを使用すると、スナップインはステータス バーのテキストを変更できます。これは IComponent のインスタンスによってのみ使用されることに注意してください。
| pszStatusText | LPWSTR | in | ステータス バーに表示するテキストを含む、null で終わる文字列へのポインター。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
解説(Remarks)
ステータス バーには 3 つのセクションがあり、パイプ文字 (|) で区切られます。たとえば、ステータス バーのテキストを "Left| Middle| Right" に設定すると、"Left" がステータス バーの左端のセクションに、" Middle" が中央のセクションに、" Right" が右端のセクションに配置されます。
3 つを超えるフィールドが区切られている場合 (つまり、パイプが 2 つを超える場合)、4 番目以降のフィールドに配置される内容はすべて省略されます。
さらに、中央のセクションはプログレス バーとして機能するように設計されています。この機能は、中央のセクションに最初の文字として '%' 文字を渡し、続けて 0 から 100 までの数値を渡すことで呼び出されます。この場合、このセクションはテキストの代わりに、0 パーセントから 100 パーセントまで進行するプログレス バーを表示します。たとえば、"Done|%75" を渡すと、"Done" が左のセクションに配置され、75% 完了したプログレス バーが中央のセクションに配置されます。
ステータス バーの中央のセクションに '%' で始まる文字列を表示するには、文字列を '%%' で始めます。これにより、中央のセクションはテキストを表示し、最初の '%' が削除されます。たとえば、"Today is|%%Wednesday%" の場合、左のセクションには "Today is" が、中央のセクションには "%Wednesday%" が表示されます。中央のセクションで '%' に続いて無効な数値または数値以外のテキストが入力された場合、中央のセクションは空になります。セクション内の文字が '%' のみの場合は、テキストとして表示されます。
このメソッドは、 IComponent を通じて取得した IConsole2 インターフェイス ポインターから呼び出す必要があります。
現在選択されているスコープ項目を所有するスナップインのみが、ステータス バーのテキストを変更できます。
MMC バージョン 1.1 以降では、各マルチ ドキュメント インターフェイス (MDI) 子ウィンドウにステータス バーがあります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IConsole2 "{103D842A-AA63-11D1-A7E1-00C04FD8D565}"
#usecom global IConsole2 IID_IConsole2 "{}"
#comfunc global IConsole2_Expand 14 sptr,int
#comfunc global IConsole2_IsTaskpadViewPreferred 15
#comfunc global IConsole2_SetStatusText 16 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。