ITaskbarList2
COM公式ドキュメント
ITaskbarList インターフェースを拡張し、ウィンドウを全画面表示としてマークするメソッドを公開します。
解説(Remarks)
このインターフェースは、継承元である ITaskbarList インターフェースのメソッドも提供します。
Shell も全画面アプリケーションを自動的に検出しようとしますが、ITaskbarList2::MarkFullscreenWindow メソッドを使用する場合ほど信頼性は高くありません。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ウィンドウを全画面としてマークします。
| hwnd | HWND | in | マークするウィンドウのハンドル。 |
| fFullscreen | BOOL | in | ウィンドウに設定したい全画面状態を示すブール値。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
fFullscreen の値を TRUE に設定すると、Shell はこのウィンドウを全画面ウィンドウとして扱い、このウィンドウがアクティブなときはタスクバーが z オーダーの最下部に移動されます。fFullscreen の値を FALSE に設定すると全画面マークが解除されますが、Shell がそのウィンドウを確実に全画面ではないものとして扱うわけではありません。fFullscreen が FALSE の場合、Shell は自動検出機能に依存してウィンドウの扱い方を決定するため、依然としてそのウィンドウを全画面としてフラグ付けする可能性があります。
Windows 7 以降では、 ウィンドウを表示する前に SetProp(hwnd, L"NonRudeHWND", reinterpret_cast<HANDLE>(TRUE)) を呼び出すことで、そのウィンドウを全画面として扱わないよう Shell に指示できます。これにより、タスクバーが z オーダー上でウィンドウより下に配置されるよう自身を調整することがなくなります。これは ITaskbarList2::MarkFullscreenWindow(FALSE) と似ていますが、Shell が自動検出機能にフォールバックせず、ウィンドウを全画面として扱わない点が異なります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITaskbarList2 "{602D4995-B13A-429B-A66E-1935E44F4317}"
#usecom global ITaskbarList2 IID_ITaskbarList2 "{56FDF344-FD6D-11D0-958A-006097C9A090}"
#comfunc global ITaskbarList2_MarkFullscreenWindow 8 sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。