ITaskbarList
COM公式ドキュメント
タスクバーを制御するメソッドを公開します。タスクバー上の項目を動的に追加、削除、およびアクティブ化できます。
解説(Remarks)
ITaskbarList は自分で実装するものではありません。シェルによって実装されています。
ITaskbarList を使用して、タスクバーへの項目の追加、タスクバーからの項目の削除、タスクバー上の項目のアクティブ化を行います。
このインターフェイスの使用方法の詳細については、Modifying Contents of the Taskbar を参照してください。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
タスクバー リスト オブジェクトを初期化します。このメソッドは、他の ITaskbarList メソッドを呼び出す前に呼び出す必要があります。
戻り値
型: HRESULT
成功した場合は S_OK を、それ以外の場合はエラー値を返します。このメソッドが失敗した場合、他のメソッドは呼び出せません。呼び出し元のアプリケーションはインターフェイス ポインターを解放する必要があります。
タスクバーに項目を追加します。
| hwnd | HWND | in | タスクバーに追加するウィンドウのハンドル。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
任意の種類のウィンドウをタスクバーに追加できますが、ウィンドウには少なくとも WS_CAPTION スタイルを持たせることをお勧めします。
このメソッドで追加したウィンドウは、追加したウィンドウが破棄される際に DeleteTab メソッドで削除する必要があります。
タスクバーから項目を削除します。
| hwnd | HWND | in | タスクバーから削除するウィンドウのハンドル。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
タスクバー上の項目をアクティブ化します。実際にはウィンドウはアクティブ化されず、そのウィンドウのタスクバー上の項目がアクティブとして表示されるだけです。
| hwnd | HWND | in | アクティブとして表示するタスクバー上のウィンドウのハンドル。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
タスクバー項目をアクティブとしてマークしますが、視覚的にはアクティブ化しません。
| hwnd | HWND | in | アクティブとしてマークするウィンドウのハンドル。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
SetActiveAlt は、いずれかの項目の押下状態を変更することなく、hwnd に関連付けられた項目をそのウィンドウのプロセスにおける現在のアクティブ項目としてマークします。そのプロセス内で別のタブをアクティブ化するようなユーザー操作が行われると、代わりに hwnd に関連付けられたタブがアクティブ化されます。hwnd に関連付けられたプロセスがアクティブでない場合、ウィンドウの項目のアクティブ状態が保持されることは保証されません。特定のタブを常にアクティブにするには、いずれかのウィンドウがアクティブ化されるたびに SetActiveAlt を呼び出してください。hwnd に NULL を指定して SetActiveAlt を呼び出すと、この状態がクリアされます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITaskbarList "{56FDF342-FD6D-11D0-958A-006097C9A090}"
#usecom global ITaskbarList IID_ITaskbarList "{56FDF344-FD6D-11D0-958A-006097C9A090}"
#comfunc global ITaskbarList_HrInit 3
#comfunc global ITaskbarList_AddTab 4 sptr
#comfunc global ITaskbarList_DeleteTab 5 sptr
#comfunc global ITaskbarList_ActivateTab 6 sptr
#comfunc global ITaskbarList_SetActiveAlt 7 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。